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ステータスとなる。
・メタキャラクタの”(“、”)”と異なり、”{“と”}”は予約文字である事に注意。
これらはワードブレイクを生じないので、空白または他のメタキャラクタによってリストと識別できるように記述しなければならない。
- bashのシェルスクリプト実行方法
- bashのシェルスクリプト プログラミング方法メモ
- bashのパイプの使い方
- bashのlist、サブシェル、コマンドブロック
- bashでの式の評価と算術演算
- bashでパターンマッチを使って条件評価
- bashのfor文で配列やセパレータ付き文字列から各要素を取り出す
- bashのfor文を使ってディレクトリ内のファイル一覧とディレクトリ一覧を出力
- bashのselect制御構造
- bashのパターンマッチ演算子の使い方
- ファイルの中身を一行ずつ読んで文字列を置換するbashスクリプト
- ディスク使用量が多いディレクトリを抽出するbashスクリプト
- ディレクトリ内の複数のファイルに対しファイル内の文字列を置換するbashスクリプト
- Bashスクリプトでmysqldumpバックアップと世代管理
- Dos攻撃など大量アクセスのログを検知するBashスクリプトを作成