crontabに次のコマンドを追加しようとしています。
I=1; for X in $(/bin/ls -r /var/tmp/*); do [ $((I++)) -le 28 ] && echo "lower" || echo "higher"; done
このコマンドは、コマンドライン(bash)で実行すると正しく機能します。しかし、crontabにその行を追加して実行すると、cronは次のように文句を言います。
/bin/sh: 1: arithmetic expression: expecting primary: "I++"
cronで別の構文を使用する必要がありますか?
編集1:私はそれをsh
次に置き換えましたbash
:/etc/crontab
SHELL=/bin/bash
再起動しましたが、cron
次のcron行はまだ実行されません。
(I=1; for X in $(/bin/ls -r /var/tmp/*); do [ $((I++)) -le 28 ] && echo "lower" || echo "higher"; done)
/bin/sh
エラーは、次の代わりにまだ解釈されていることを示しています/bin/bash
。
/bin/sh: 1: arithmetic expression: expecting primary: "I++"
ベストアンサー1
私の記憶が正しい場合、Cronのデフォルトは/bin/sh
.check/etc/crontab/
行ですSHELL=
。/bin/sh
()に設定されている可能性が高いですdash
。私はあなたがこれをSHELL=/bin/bash
あなたのユーザーのcrontabファイル(によって編集されたcrontab -e
)で設定できると思います。あるいは、スクリプトを書くこともできます。