Ubuntu
Cron 作業 * 替換為目前目錄中的文件名
這是我的第一個 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,否則它不會起作用。