/ bin / sh:语法错误:未终止的引用字符串

时间:2011-03-29 14:09:02

标签: bash ubuntu

我正在尝试将cronjob输出到指定(文件夹)位置的日期文件中。

我的crontab条目如下所示:

* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/%Y%m%d.test.log")

我不明白的是,当我在控制台输入此命令时,我得到正确的字符串:

echo $(date "+/home/oompah/logs/%Y%m%d.test.log")
/home/oompah/logs/20110329.test.log

导致此错误的原因是什么?如何解决?

bash版本信息是:

GNU bash,版本4.1.5(1)-release(x86_64-pc-linux-gnu)

3 个答案:

答案 0 :(得分:91)

你应该逃避你的crontab中的百分号:

* * * * * /some/path/test.sh >> $(date "+/home/oompah/logs/\%Y\%m\%d.test.log")

百分比(%)符号在crontabs中具有特殊含义。它们被解释为换行符。

答案 1 :(得分:3)

将date命令放在脚本中。 cron未必运行您认为的shell。

答案 2 :(得分:0)

确保将shebang #!/bin/bash作为脚本的第一行。另外,如bmargulies所述,如果可能,请将date命令放在脚本中。