为什么百分号(%)在crontab中不起作用?

我正在写文件到由bash脚本使用cron运行的日志。 在cron上的调用看起来像这样:

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

但是当我检查crontablogging为

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

它永远不会写日志文件。 有什么我需要改变让cron写date?

Solutions Collecting From Web of "为什么百分号(%)在crontab中不起作用?"

这是一个逃避变量的问题:

 * * * * * /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