Open5
複数のシェルコマンドを1行で連続実行する方法の整理
下記4つを整理する
-
;
(セミコロン) -
|
(パイプ) &&
;
cmd1 ; cmd2
cmd1が失敗したとしても、cmd2が実行される。
デフォルトだと、終了ステータスは、cmd2の実行結果になる
|
cmd1 | cmd2
cmd1が失敗したとしても、cmd2が実行される。また、cmd2の引数としてcmd1の結果が使える
デフォルトだと、終了ステータスは、cmd2の実行結果になる
&&
cmd1 && cmd2
cmd1が成功した場合のみ、cmd2が実行される。
終了ステータスは、実行された最後のコマンドのものになる
;
や |
でコマンドを実行する前に、set -o pipefail
としておくと、セミコロンやパイプの前のコマンドが失敗した時点で処理を中断させることができる