bashのlist、サブシェル、コマンドブロックについて、体系的に理解できていなかったのでmanを見てまとめてみました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
リスト
1)リストとは?
・;, &, &&, ||を使って複数のコマンドを制御する。
・優先順位は、&&と||が一番高く、次に、;と&
2)&
コマンドの最後に&がある場合、そのコマンドはリターンステータス0でコマンドの完了を待たずに終了し、コマンドがバックグラウンドで実行される。
3);
・コマンドは前のコマンドの終了を待って順に実行される。
・リターンステータスは、最後のコマンドのexitステータス。
4)&&
○構文
command1 && command2
コマンド1のexitステータスが0の場合のみコマンド2が実行される。
5)||
○構文
command1 || command2
コマンド1のexitステータスが0以外の場合のみコマンド2が実行される。
・;, &, &&, ||を使って複数のコマンドを制御する。
・優先順位は、&&と||が一番高く、次に、;と&
2)&
コマンドの最後に&がある場合、そのコマンドはリターンステータス0でコマンドの完了を待たずに終了し、コマンドがバックグラウンドで実行される。
3);
・コマンドは前のコマンドの終了を待って順に実行される。
・リターンステータスは、最後のコマンドのexitステータス。
4)&&
○構文
command1 && command2
コマンド1のexitステータスが0の場合のみコマンド2が実行される。
5)||
○構文
command1 || command2
コマンド1のexitステータスが0以外の場合のみコマンド2が実行される。
複合コマンド
1)(list) サブシェル
・listはサブシェル環境で別のプロセスとして実行される。
・シェル環境に影響する変数の割当てとビルトインコマンドはコマンド実行後までは維持されない。
・リターンステータスはlistのexitステータスとなる。
2){ list; } コマンドブロック
・listは別のプロセスを生成せず、現在のシェル環境で実行される。
・listはnewlineまたはセミコロンで終端されなければならない。
・リターンステータスはlistのexitステータスとなる。
・メタキャラクタの”(“、”)”と異なり、”{“と”}”は予約文字である事に注意。
これらはワードブレイクを生じないので、空白または他のメタキャラクタによってリストと識別できるように記述しなければならない。
・listはサブシェル環境で別のプロセスとして実行される。
・シェル環境に影響する変数の割当てとビルトインコマンドはコマンド実行後までは維持されない。
・リターンステータスはlistのexitステータスとなる。
2){ list; } コマンドブロック
・listは別のプロセスを生成せず、現在のシェル環境で実行される。
・listはnewlineまたはセミコロンで終端されなければならない。
・リターンステータスはlistのexitステータスとなる。
・メタキャラクタの”(“、”)”と異なり、”{“と”}”は予約文字である事に注意。
これらはワードブレイクを生じないので、空白または他のメタキャラクタによってリストと識別できるように記述しなければならない。