Cron
為什麼我不能使用 `` 在 crontab 中繼續一行?
acme-client(1) 手冊頁建議使用以下cron 條目:
~ * * * * acme-client example.com && \ rcctl reload httpd
當我添加到
crontab
編輯時,我使用該語法時不會保存:crontab: installing new crontab "/tmp/crontab.nOryzjBTlv":22: bad minute crontab: errors in crontab file, unable to install Do you want to retry the same edit?
但是如果我把它寫成一行就可以了:
~ * * * * acme-client example.com && \ rcctl reload httpd
為什麼
\
不允許繼續一行到下一行?
無法將單個命令行拆分為多行,例如 shell 的尾隨“\”
如果您這樣做,您將在下一段中找到上述聲明
man 5 crontab
。請注意以下來自 Ubuntu 20.04LTS。“第六”欄位(該行的其餘部分)指定要執行的命令。該行的整個命令部分,直到換行符或 % 字元,都將由 /bin/sh 或 crontab 文件的 SHELL 變數中指定的 shell 執行。命令中的百分號 (%),除非用反斜杠 () 轉義,否則將更改為換行符,第一個 % 之後的所有數據將作為標準輸入發送到命令。無法將單個命令行拆分為多行,例如 shell 的尾隨“\”
來自https://man.openbsd.org/crontab.5
它說該行的其餘部分是命令欄位,它沒有說明命令如何跨越多行。您不應假定 crontab 與 shell 腳本具有相同的語法。
命令欄位(該行的其餘部分)是要執行的命令。該行的整個命令部分,直到換行符或 % 字元,將由 /bin/sh 或 crontab 的 SHELL 變數中指定的 shell 執行。命令中的百分號 (’%’),除非使用反斜杠 (’') 轉義,否則將更改為換行符,並且第一個 ‘%’ 之後的所有數據將作為標準輸入發送到命令。