🐚
Bash の基本: Control Operator
Control Operatorの用途
複数のコマンドをどのように実行するのかを制御します。例えば、cmdA && cmdB とした場合、cmdA が正常終了した場合のみ cmdB が実行されます。
Control Operatorの種類
| 種類 | 意味 |
|---|---|
| A;B | Aのexit codeに関わらず、Aの次にBが実行されます |
| A&&B | AND。Aが成功した場合のみ、Bが実行されます |
| A||B | OR。Aが失敗した場合のみ、Bが実行されます |
| A|B | AのstdoutをBのstdinにリダイレクトします。パイプが使われるとどちらもsubshellで実行されます |
| (A) | subshellで実行します。$(コマンド置換)、<(プロセス置換) |
Meta character
次の文字も Bash においてロジックの流れを制御します(理由は分かりませんが、ドキュメント上は Control Operator とは区別されています)。
| 種類 | 意味 |
|---|---|
| >, >> | ダイレクト。>は上書き、 >>は追記です |
| 2>, &> | >はstderrを、&>はstdoutとstferrをリダイレクトします |
| whitespace ( \n ) | Bash が単語の区切りを探す際に目印とします |
補足
- Bash における exit code:
- 0 - stdin
- 1 - stdout
- 2 - stderr
- 2> /dev/null(bit bucket) はエラーを破棄する
Discussion