Webエンジニアのメモ帳

技術的な話を中心に書いています。

【シェル】パイプとエラーについて

パイプで無関係な2つのコマンドを繋いでいて、1つめのコマンドでエラーが発生したときの挙動を調べました。

$ expr 2 / 1 || echo a
2

# エラーを発生させる
$ expr 2 / 0 || echo a
expr: division by zero
a

その結果、1つめのコマンドが正常に実行されれば2つめのコマンドは実行されず、1つめのコマンドがエラーだった場合は2つめのコマンドが実行されるようです。

ちなみにですが、以下のようにして標準エラーを出力させないようにした場合も、結果は同じです。

$ expr 2 / 0 2>/dev/null || echo a
a