这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
为什么不允许\
将一行继续到下一行?
答案1
无法将单个命令行拆分为多行,例如 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 执行。命令中的百分号('%'),除非用反斜杠('\')转义,否则将被更改为换行符,并且第一个'%'之后的所有数据将作为标准输入发送到命令。