コマンドがゼロ以外の値を返した場合にスクリプトを終了したいのですが、set -e
。
現在、スクリプトは問題(望ましいこと)に遭遇すると失敗しますが、見逃すのは簡単です。一部のコマンドは、失敗したものを出力せずにエラーコードを返す場合があります。
スクリプトが終了したことを警告するエラーメッセージを追加する標準的な方法は何ですか?
Bashは-eのようなエラーをキャプチャしますが、終了せず、他のことを行います スクリプトを終了する前にエラーメッセージを表示する方法を見つけました。
trap
を使用して、エラーが発生したときに指定されたコードが実行されるようにすることができます。これは、-e
オプションがスクリプトを終了する直前に発生します。例えば
set -e
err_report() {
echo "Error on line $1"
}
trap 'err_report $LINENO' ERR
echox
echo "x"
結果になります
test.sh: line 9: echox: command not found
Error on line 9