EXIT トラップを使用して Bash スクリプトで構文エラーが発生した場合、呼び出し元に終了コードを伝達することは可能ですか? たとえば、私が持っている場合:
#! /bin/bash
set -eu
trap "echo dying!!" EXIT
echo yeah
echo $UNBOUND_VARIABLE
echo boo
次に、実行すると、スクリプトが実際に正常に終了しなかった場合でも、終了コード 0 が返されます。
$ bash test.sh
yeah
test.sh: line 8: UNBOUND_VARIABLE: unbound variable
dying!!
$ echo $?
0
しかし、終了トラップをコメント アウトすると、スクリプトは 1 を返します。または、バインドされていない変数を含む行をゼロ以外を返すコマンド (たとえば/bin/false
) に置き換えると、その終了値が希望どおりに伝達されます。