cron:bash構文が機能しない

cron:bash構文が機能しない

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)で設定できると思います。あるいは、スクリプトを書くこともできます。

おすすめ記事