Skip to content

Instantly share code, notes, and snippets.

@showa-yojyo
Created July 30, 2026 12:45
Show Gist options
  • Select an option

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

Select an option

Save showa-yojyo/0ea327c649c1ce44cfcfaeef2d3d33a7 to your computer and use it in GitHub Desktop.
A note on command substitution in Bash
author プレハブ小屋 <2386769+showa-yojyo@users.noreply.github.com>
created 2026-07-30
draft true
tags
bash
command substitution
title Bash 命令置換ノート

Bash 命令置換ノート

$(some-command)

Warning

命令を backquotes で囲む形式は旧式であり、好んで使ってはいけない。

  • $(some-command) はサブシェルで走る。
  • $(some-command) の標準出力が「外側」の命令の一部を構成するようになる。
    • 末尾の改行は除去される

$(cat some-file) をしたい場合は、より高速な $(< some-file) とするのが好ましい。

  • 命令置換は入れ子可能だ。
  • 二重引用符内で命令置換を行う場合、語分割やファイル名展開がその結果に対して行われない。

命令置換の別の形式

Important

Bash 5.3 からの新機能

${ some-command; }

開き中括弧の直後から命令開始までの間には次のいずれかの文字がなければならない:

  • 空白
  • タブ文字
  • 改行文字
  • |

some-command はサブシェルではなく現在の環境で走る。それ以外は $(some-command) と同様に動作する。

変数展開と紛らわしい構文につき、Bash に語として解釈させるように閉じ中括弧を書け。


以上

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