为什么百分号(%)不crontab的工作吗? [重复](Why percent signs (%

2019-09-01 05:33发布

这个问题已经在这里有一个答案:

  • 如何为特殊%在crontab中? 1个回答

我被一个bash脚本使用cron的文件写入到日志跑。 在cron中的调用如下:

*/25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log"

但是,当我检查的crontab它作为记录

*/25 * * * * bash script.sh > "/var/log/$(date +).log"

它从不写入日志文件。 有什么我需要改变,以得到cron来写日期?

Answer 1:

这是逃避变量的问题:

* * * * * /usr/bin/touch /tmp/$(date +\%Y:\%m).log
#                                      ^   ^

工作给我。

man 5 crontab

百分之-体征(%)在命令,除非与反斜杠转义(\),将变为换行符,并且第一后%的所有数据将被发送到命令作为标准输入。

所以

*/25 * * * * /bin/bash script.sh > "/var/log/$(date +\%Y-\%m-\%d_\%H:\%M).log"
#                                                    ^    ^   ^   ^   ^

应该管用。

请注意我用/bin/bash ,而不是仅仅bash



文章来源: Why percent signs (%) do not work in crontab? [duplicate]