| author | プレハブ小屋 <2386769+showa-yojyo@users.noreply.github.com> | |||
|---|---|---|---|---|
| created | 2026-07-27 | |||
| draft | true | |||
| tags |
|
|||
| title | Bash 命令をまとめる方法ノート |
本稿でいう命令列とは、次のいずれかの演算子で区切られたパイプラインの列とする:
;&&&||
必要に応じて、命令列は次のいずれかの文字で終了するものとする:
;&- 改行
TODO: 命令列の定義を別のファイルに移す。使い回す可能性が高い。
Bash では、主にリダイレクトの便宜を図る目的のために、命令列を一体にする記法が二つ存在する:
- 丸括弧
(...)でまとめる - 中括弧
{...}でまとめる
一体化した命令は戻り値を返す。それは命令列自体の戻り値に等しい。
(list)( list ) 形式に命令列をまとめると、サブシェルが作成する。その環境内で命令列 list が走る。
命令列がサブシェル内で走るということは、例えば、ここで変数代入などの操作はサブシェルの外側には効かないことを意味する。この性質を利用して、変数の値を一時的にしか変化したくない場合には、丸括弧形式が有用になり得る。
{ list; }{ list; } 形式に命令列をまとめると、命令列 list が現在のシェル環境内で走る。
丸括弧構文とは異なり、中括弧が Bash 予約語であるため、中括弧構文では list を空白やその他のシェルメタ文字で区切る必要がある。
{から list までに空白が必要;,&, 改行のいずれかが}の直前に必要
以上