Bash のエラー発生時に終了するオプション

通常、Bash の処理は エラーが発生しても次のステップへと 進んで行きます。

[test1.sh]

true
echo 1=$?

false
echo 2=$?

true
echo 3=$?

false
echo 4=$?
$ bash test1.sh

1=0
2=1
3=0
4=1

エラーが発生したときに止めるには オプション "-e" を付けます。

$ bash -e test1.sh

1=0

また、パイプしている場合 最後のコマンドの結果が返ります。

[test2.sh]

true | true
echo 1=$?

true | false | true
echo 2=$?

false | true
echo 3=$?

true | false
echo 4=$?
$ bash test2.sh

1=0
2=0
3=0
4=1

これにオプション "-e" を付けて実行しても

$ bash -e test1.sh

1=0
2=0
3=0

最後のコマンドで発生しているエラーしか 反応してくれません。

このようなときは さらに オプション "-o pipefail" を指定します。

$ bash -e -o pipefail test1.sh

1=0

これでパイプ中のエラーが返るようになります。

Google サイト内検索

Amazonアソシエイト