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

Linux 为什么百分比符号(%)在crontab中不起作用?,linux,bash,date,cron,crontab,Linux,Bash,Date,Cron,Crontab,我正在使用cron将文件写入bash脚本运行的日志中。对cron的调用如下所示: */25 * * * * bash script.sh > "/var/log/$(date +%Y-%m-%d_%H:%M).log" 但当我检查crontab时,它会记录为 */25 * * * * bash script.sh > "/var/log/$(date +).log" 而且它从不写入日志文件。是否需要更改某些内容才能让cron写入日期?这是一个转义变量的问题: * * * * *

我正在使用cron将文件写入bash脚本运行的日志中。对cron的调用如下所示:

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

命令中的百分号(%),除非用反斜杠(\)转义,否则将更改为换行字符,并且第一个%之后的所有数据将作为标准输入发送到命令

所以

应该有用


注意:我使用了
/bin/bash
而不是
bash

这是一个转义变量的问题:

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

man 5 crontab

命令中的百分号(%),除非用反斜杠(\)转义,否则将更改为换行字符,并且第一个%之后的所有数据将作为标准输入发送到命令

所以

应该有用

注意我使用了
/bin/bash
而不是
bash