bashのlist、サブシェル、コマンドブロックについて再確認

bashのlist、サブシェル、コマンドブロックについて、体系的に理解できていなかったのでmanを見てまとめてみました。

(1)リスト


 
1)リストとは?
 
・;, &, &&, ||を使って複数のコマンドを制御する。
 
・優先順位は、&&と||が一番高く、次に、;と&
 
2)&
 
コマンドの最後に&がある場合、そのコマンドはリターンステータス0でコマンドの完了を待たずに終了し、コマンドがバックグラウンドで実行される。
 
3);
 
・コマンドは前のコマンドの終了を待って順に実行される。
 
・リターンステータスは、最後のコマンドのexitステータス。
 
4)&&
 
command1 && command2
 
コマンド1のexitステータスが0の場合のみコマンド2が実行される。
 
5)||
 
command1 || command2
 
コマンド1のexitステータスが0以外の場合のみコマンド2が実行される。
 
 

(2)複合コマンド


 
1)(list) サブシェル
 
・listはサブシェル環境で別のプロセスとして実行される。
 
・シェル環境に影響する変数の割当てとビルトインコマンドはコマンド実行後までは維持されない。
 
・リターンステータスはlistのexitステータスとなる。
 
2){ list; } コマンドブロック
 
・listは別のプロセスを生成せず、現在のシェル環境で実行される。
 
・listはnewlineまたはセミコロンで終端されなければならない。
 
・リターンステータスはlistのexitステータスとなる。
 
・メタキャラクタの”(“、”)”と異なり、”{“と”}”は予約文字である事に注意。
 
これらはワードブレイクを生じないので、空白または他のメタキャラクタによってリストと識別できるように記述しなければならない。

関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です