评估 cron 中的数学表达式

And*_*unt 1 bash cron

我想根据一周中某一天的奇偶校验命名文件。在终端中,以下工作:$(($(date +\%u)%2))

但这在 cron 中不起作用(我怀疑对数学表达式的评估不起作用)。

我怎样才能让它在 cron 中工作?

der*_*ert 8

你逃脱了一个百分号而不是另一个:

$(($(date +\%u)%2))
               ^
              HERE
Run Code Online (Sandbox Code Playgroud)

crontab 条目中的所有百分号都需要转义,因为 % 在那里有特殊含义。引用 crontab(5) 联机帮助页:

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

诚然,该段的措辞可以更好。

所以这需要是:

$(($(date +\%u)\%2))
Run Code Online (Sandbox Code Playgroud)