コマンド置換、変数展開、算術式展開のメモ

シェルスクリプトを学習していて、${}、$(())、$() がよく分からなかったので、最低限の簡単な内容をメモ。

$() コマンド置換

コマンドの出力結果を文字列として埋め込む。
主に変数に代入する時に使用ことが多いが、ダブルクォートの中でも有効なので、直接の使用も可能。

today=$(date +%Y-%m-%d)
echo "今日は $today です"
# → 今日は 2026-03-31 です

# 直接使用
echo "ファイル数: $(ls | wc -l)"

${} 変数展開

変数の値を展開する。$var より ${var} の方が応用が効く。
${} 内でパラメータ展開の記法を設定して、値の加工ができる。

name="Takeshi"
echo "${name}"

# 文字の加工
echo "${name,,}" # → takeshi (小文字化)
echo "${name^^}" # → TAKESHI (大文字化)
echo "${#name}"  # → 5(文字数)

# デフォルト値(未定義なら代替値を使う)
echo "${user:-guest}" # → 変数 user が未定義なら "guest"

# 文字列の置換
path="/usr/local/bin"
echo "${path/local/opt} # → /usr/opt/bin

$(()) 算術式展開

整数の計算結果を展開する。

a=10
b=3

echo $((a+b)) # → 13

# 変数への代入
count=0
((count++))
echo $count # → 1

ページの先頭へ