終了 2 を返す if 条件の偽ステートメントのログを書き込みます。

終了 2 を返す if 条件の偽ステートメントのログを書き込みます。

条件句に 2 つの終了があるスクリプトを 5 分ごとに実行しています。

#!/bin/bash
date=$(date +%Y)
if [ $date -eq '2014' ]
then
    echo "Current year is $date"
    exit 0
else
    echo "Current year is not $date"
    exit 2
fi

終了 2 のときにのみログを書き込むように指定するにはどうすればよいでしょうか? これは crontab で可能ですか?

5 * * * * /home/user/script.sh >> script.log 2>> script.err

私は理解しました 「 >> スクリプト.log 」スクリプトの戻り値をすべて書き込み、「 2 >> スクリプト.err 」スクリプトが正しく実行されなかった場合にのみ書き込みます。したがって、スクリプトの exit 2 の場所にのみ書き込む機会があるかどうかはわかりません。

答え1

stderrリダイレクトを使用するためにエラーを記述するには1>&2:

echo "Current year is not $date" 1>&2

exit [number]戻りコードを指定しています[number]

参照:

ファイル記述子

標準ストリーム

リダイレクトについて

答え2

から実行されているため、logger( )を使用できます。また、少なくとも上記のスニペットでは終了コードを使用して何も行わないため、終了コードは実際には必要ありません。man loggercron

#!/bin/bash
DATE=$(date +%Y)
if [ $DATE -ne '2014' ]; then
    logger -f script.log "Current year is not $date"
fi

関連情報