通过cronjob发送带附件的电子邮件时出错,但在bash中工作

我有一个奇怪的问题。 我使用以下命令行通过控制台发送带有附件的电子邮件:

/usr/bin/mutt -s "AwStats $(date +%d.%m.%Y)" -a /path/to/file [email protected] < /dev/null 

奇迹般有效。

但我想通过cron发送,所以我创build了这个cronjob:

 @daily root /usr/bin/mutt -s "AwStats $(date +%d.%m.%Y)" -a /path/to/file [email protected] < /dev/null 

cronjob确实得到执行,但失败并显示以下错误消息:

 /bin/sh: -c: line 0: unexpected EOF while looking for matching `)' /bin/sh: -c: line 1: syntax error: unexpected end of file 

我不知道为什么。 任何人都可以帮忙吗? 非常感谢你提前!

亲切的问候

在crontab中你需要用\ so来转义%

 @daily root /usr/bin/mutt -s "AwStats $(date +\%d.\%m.\%Y)" -a /path/to/file [email protected] < /dev/null 

可能会为您解决问题。

除了Iain的回答,因为cron不是bash,你可能也需要改变

 $(date +\%d.\%m.\%Y) 

成为

 `date +\%d.\%m.\%Y` 

或者,您可以将所有原始作业放在bash脚本中,然后调用脚本。