/ bin / sh:语法错误:未终止的带引号的string

我想获得一个cronjobpipe道输出到指定的(文件夹)位置的date文件。

我的crontab条目看起来像这样:

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

我不明白的是,当我在控制台input这个命令,我得到正确的string:

 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)

你应该去掉你的crontab中的百分号:

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

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

把date命令放在脚本里面。 cron不一定运行你认为是的shell。

确保你的脚本中有第一行#!/bin/bash 。 另外,如bmargulies所述,如果可能的话,把date命令放在脚本里面。