Open5

複数のシェルコマンドを1行で連続実行する方法の整理

nakaakistnakaakist

;

cmd1 ; cmd2

cmd1が失敗したとしても、cmd2が実行される。
デフォルトだと、終了ステータスは、cmd2の実行結果になる

nakaakistnakaakist

|

cmd1 | cmd2

cmd1が失敗したとしても、cmd2が実行される。また、cmd2の引数としてcmd1の結果が使える
デフォルトだと、終了ステータスは、cmd2の実行結果になる

nakaakistnakaakist

&&

cmd1 && cmd2

cmd1が成功した場合のみ、cmd2が実行される。
終了ステータスは、実行された最後のコマンドのものになる

nakaakistnakaakist

;| でコマンドを実行する前に、set -o pipefailとしておくと、セミコロンやパイプの前のコマンドが失敗した時点で処理を中断させることができる