以下语句在命令提示符下工作。但是在cron中不起作用。
myvar=`date +'%d%m'`; echo $myvar >> append.txt
cron日志显示只运行了一部分日期语句。 我如何在cron中使用它?
答案 0 :(得分:2)
使用反斜杠(\%
)转义百分号。
答案 1 :(得分:1)
我的一般经验法则是“不要在crontab文件中编写脚本”。这意味着我不会在crontab文件中放置除简单脚本名称(带绝对路径)和可能的一些控制参数之外的任何内容。特别是,我没有在crontab文件中放置I / O重定向或变量评估;这样的东西放在由cron作业运行的(shell)脚本中。
这可以避免麻烦 - 并且适用于古代和现代的各种cron变体。
答案 2 :(得分:1)
来自man 5 crontab
:
第六场(其余的 line)指定要运行的命令。 该行的整个命令部分,直到换行符或%字符,将是 由/ bin / sh或by执行 在cronfile的SHELL变量中指定的shell。 除非使用反斜杠()进行转义,否则命令中的百分号(%)将更改为 换行符,等等 第一个%之后的数据将作为标准输入发送到命令。
您的%
被更改为换行符,并且命令的后半部分将作为stdin提供给命令。正如Ignacio所说,你需要使用%
\
s