`set -o pipefail` を設定する。 ## 背景 以下の[[Bash]]スクリプトを実行する。 ```bash #!/bin/bash aaaaa | echo echo $0 ``` 結果はこうなる。 ```console $ ./hoge.sh ./hoge.sh: line 4: aaaaa: command not found 0 ``` 例外処理が直感的にハンドリングできない懸念がある。 ```bash # これはexit 1にならない aaaaa | echo || exit 1 ``` ## set -o pipefail 対応後 ```bash #!/bin/bash set -o pipefail aaaaa | echo echo $0 ``` ちゃんと0以外のエラーステータスが出力される。 ```console $ ./hoge.sh ./hoge.sh: line 4: aaaaa: command not found 127 ``` 以下のコードも期待通り動く。 ```bash # exit 1になる aaaaa | echo || exit 1 ```