为什么我不能使用 `\` 在 crontab 中继续一行?

Pau*_*aul 1 cron openbsd

极致的客户端(1)手册页提出以下建议cron项:

~   *   *   *   *   acme-client example.com && \
    rcctl reload httpd
Run Code Online (Sandbox Code Playgroud)

当我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? 
Run Code Online (Sandbox Code Playgroud)

但是,如果我只是将其设为一行,则可以很好地保存:

~   *   *   *   *   acme-client example.com && \ rcctl reload httpd
Run Code Online (Sandbox Code Playgroud)

为什么\不允许继续一行到下一行?

Spa*_*sle 5

无法将单个命令行拆分为多行,例如 shell 的尾随“\”

如果你这样做,你会在下面的段落中找到上面的陈述man 5 crontab。请注意以下来自 Ubuntu 20.04LTS。

``sixth'' 字段(该行的其余部分)指定要运行的命令。该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或 shell 指定执行?在 crontab 文件的 SHELL 变量中定义。命令中的百分号 (%),除非用反斜杠 (\) 转义,否则将更改为换行符,并且第一个 % 之后的所有数据将作为标准输入发送到命令。无法将单个命令行拆分为多行,例如 shell 的尾随“\”

来自https://man.openbsd.org/crontab.5
它说该其余部分是命令字段,它没有说明命令如何跨越多行。您不应假定 crontab 具有与 shell 脚本相同的语法。

命令字段(该行的其余部分)是要运行的命令。该行的整个命令部分,直到换行符或 % 字符,将由 /bin/sh 或由 crontab 的 SHELL 变量中指定的 shell 执行。命令中的百分号 ('%'),除非用反斜杠 ('\') 转义,将被更改为换行符,并且第一个 '%' 之后的所有数据将作为标准输入发送到命令。

  • 我倾向于认为任何不是简单的单行程序的 crontab 命令无论如何都应该有一个适当的单独脚本。 (2认同)