Ubuntu

Cron 作業 * 替換為目前目錄中的文件名

  • April 9, 2015

這是我的第一個 shell 腳本程序,所以我認為這對你們所有人來說都是一個愚蠢的問題。

問題概述 我需要編寫一個 shell 命令來安裝我們的 Node.js 伺服器。

  • 伺服器需要安裝 3 個 crons 作為依賴項。我們提供 3 種不同的環境。

問題 因此,當我嘗試將 cron(string) 分配給變數時,字元串中的所有星號都將替換為目前工作目錄中的文件名。

VAR1="*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

現在,當我這樣做時,echo $VAR1輸出如下

*/3 file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh file1.txt file2.txt generated.txt sample.sh /usr/bin/wget -O /var/tmp/output-folder-here https://my.server.com:12000/cron/push >> /dev/null 2>&1

ls該目錄中的命令輸出是

file1.txt  file2.txt  generated.txt  sample.sh

您需要在 * 前面放一個退格鍵,這樣它就不會用作萬用字元。

VAR1="\*/1       \*       \*       \*       \*      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1"

編輯

我錯了。當您像我上面發布的那樣執行操作時,* 不會轉義。而是使用單引號。

VAR1='*/1       *       *       *       *      /usr/bin/wget -O /var/tmp/output-folder-path  https://my.server.com:12000/cron/push >> /dev/null 2>&1'

此外,如果您不想使用單引號,您可以在列印時引用變數。

echo "$VAR1"

附帶說明一下,我認為我永遠不會在 shell 腳本中嵌入 cron 命令。我似乎不是一個好習慣,除非您打算使用腳本更新 crontab,否則它不會起作用。

引用自:https://unix.stackexchange.com/questions/195203