为什么百分号(%)在crontab中不起作用?
问题描述:
我正在使用cron将文件写入由bash脚本运行的日志。在cron中的调用如下:为什么百分号(%)在crontab中不起作用?
*/25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log"
但是,当我检查的crontab它记录作为
*/25 * * * * bash script.sh > "/var/log/$(date +).log"
它从来没有写入日志文件。有什么我需要改变让cron写日期?
答
这是逃避变量的问题:
* * * * * /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
。