Linux

2016-07-20, noname

パイプ前半のエラーステータスを保持

パイプを使ってコマンドを組み合わせると、後半の戻り値が返されて、前半のエラーを補足し損ねることがあります。

$ invalidcommand | echo "Hello"
-bash: invalidcommand: command not found
Hello
$ echo $?
0

pipefailオプションを使うとパイプの前半のエラーステータスを引き継ぐことができるようになります。

$ set -o pipefail
$ invalidcommand | echo "Hello"
Hello
-bash: invalidcommand: command not found
$ echo $?
127

「set -e」が指定してあっても、パイプがあるとそこでスクリプトが停止しなかったりして時々騒動になりますが、、これも合わせて指定しておくと安心です。

参考URL

この記事は役に立ちましたか?