1

スクリプトの出力をファイルに記録するために、シェル スクリプトの先頭近くに次のコマンドを追加しました。これは、ユーザー jsmith としてスクリプトを実行すると問題なく動作しますが、スクリプトを crontab でルートとして実行すると、次のエラーが表示されます。

syntax error near unexpected token:

exec &> >(tee $LOG_PATH$TIMESTAMP.log)

$LOG_PATH と $TIMESTAMP の両方がコマンドの上で正しく定義されています。

LOG_PATH="/home/jsmith/script/logs/"
TIMESTAMP="$(date -d "today" +"%Y-%m-%d-%H:%M")"

何か案は?ありがとう!

4

1 に答える 1

1

通常、Linuxは、構文に微妙な違いがある複数のシェル(sh、csh、dash、bashなど)を備えています。スクリプトをbashでテストしたのに対し、crontabはダッシュで実行された可能性があります。

私はあなたに次のことを提案します:

  1. スクリプトに必要なシェルを確認します(最初の行を参照)
  2. そのシェルを使用するようにcronに指示します。つまり、SHELL=/bin/my_shellcrontabの先頭に設定します(詳細については、マンページを参照してください)。
于 2012-09-05T12:25:08.353 に答える