Skip to content

Instantly share code, notes, and snippets.

@showa-yojyo
Created July 27, 2026 02:15
Show Gist options
  • Select an option

  • Save showa-yojyo/fd9fdd89d384633fab90f233f37aa569 to your computer and use it in GitHub Desktop.

Select an option

Save showa-yojyo/fd9fdd89d384633fab90f233f37aa569 to your computer and use it in GitHub Desktop.
A note on grouping commands in Bash
author プレハブ小屋 <2386769+showa-yojyo@users.noreply.github.com>
created 2026-07-27
draft true
tags
bash
commands grouped with parentheses
commands grouped with braces
title Bash 命令をまとめる方法ノート

Bash 命令をまとめる方法ノート

命令列

本稿でいう命令列とは、次のいずれかの演算子で区切られたパイプラインの列とする:

  • ;
  • &
  • &&
  • ||

必要に応じて、命令列は次のいずれかの文字で終了するものとする:

  • ;
  • &
  • 改行

TODO: 命令列の定義を別のファイルに移す。使い回す可能性が高い。

概要

Bash では、主にリダイレクトの便宜を図る目的のために、命令列を一体にする記法が二つ存在する:

  • 丸括弧 ( ... ) でまとめる
  • 中括弧 { ... } でまとめる

一体化した命令は戻り値を返す。それは命令列自体の戻り値に等しい。

丸括弧 () を用いる手法

(list)

( list ) 形式に命令列をまとめると、サブシェルが作成する。その環境内で命令列 list が走る。

命令列がサブシェル内で走るということは、例えば、ここで変数代入などの操作はサブシェルの外側には効かないことを意味する。この性質を利用して、変数の値を一時的にしか変化したくない場合には、丸括弧形式が有用になり得る。

中括弧 {} を用いる手法

{ list; }

{ list; } 形式に命令列をまとめると、命令列 list が現在のシェル環境内で走る。

丸括弧構文とは異なり、中括弧が Bash 予約語であるため、中括弧構文では list を空白やその他のシェルメタ文字で区切る必要がある。

  • { から list までに空白が必要
  • ;, &, 改行のいずれかが } の直前に必要

以上

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment