crontab条目包含%号问题

crontab条目中包含%号,最常见的取时间,如:date +%d,
对%需要使用进行转义,否则不能按预期执行,正确做法为:
* * * * * echo "`date +\%d`" > /tmp/r1r.txt
而不能为
* * * * * echo "`date +%d`" > /tmp/r1r.txt


%是crontab的特殊字符,所有%后的被当作了标准输入,这可以通过“ man 5 crontab”查看到说明:
The entire command portion of the line, up to a newline or a "%" character,
will be executed by /bin/sh or by the shell specified in the SHELL variable of the cronfile.
A "%" character in the command, unless escaped with a backslash (), 
will be changed into newline char-acters,
and all data after the first % will be sent to the command as standard input.


示例:
$ cat /tmp/hello.txt 
cat: /tmp/hello.txt: 没有那个文件或目录
$ echo -e "`crontab -l` * * * * * cat > /tmp/hello.txt % hello word"|crontab -
$ crontab -l|grep hello.txt
* * * * * cat > /tmp/hello.txt % hello word
$ cat /tmp/hello.txt 
 hello word
原文地址:https://www.cnblogs.com/aquester/p/9891492.html