2017-09-12 5 views
0

私は、端末にcrontabでbashの短いcurcuitが失敗するのはなぜですか?

[ $(/usr/bin/date +"%Y%m%d") -le 20171209 ] && echo aaa >> /tmp/a 

を行う場合は、それが動作します。もし私が入っていれば、crontab -e

* * * * * echo aaa >> /tmp/a 

である。しかし、私がいる場合crontab -e

* * * * * [ $(/usr/bin/date +"%Y%m%d") -le 20171209 ] && echo aaa >> /tmp/a 

何も起こりません。

私が見/var/log/cronを見てみると

Sep 12 08:36:01 enote CROND[8809]: (root) CMD ([ $(/usr/bin/date +") 

質問

誰もが問題が何であるかを説明できますか?

+3

ほとんどのcronの使用のバリエーション '/ binに/ sh'、ない' bash'(あなたのcrontabを呼び出すことができますをエスケープする必要がありますbashスクリプトですが、crontab自体のbash機能に依存するべきではありません)。 –

+0

@ThomasDickeyターミナルで最初に 'sh'してから' $(/ usr/bin/date + "%Y%m%d")-le 20171209] && echo aaa'を実行すると動作しますので、それはsh/bashの問題だと思う。 –

答えて

1

%記号は、crontabの中で特別な意味を持っている\%

man 5 crontab/percent

Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. 
関連する問題