👾

【shell/bash】変数代入で``や$()の使う場面を忘れた時に見る記法まとめ

2023/04/21に公開
3

Linux コマンドの変数代入でよく使われる記法をチートシート風にまとめました。
Linux コマンドはたまに触る程度であり、触る度に「どういった時に``や$()を使えばいいんだっけ?」と忘れがちだった為、個人の備忘録ついでに記事化してみました。
内容は非常にシンプルですが、何かのお役に立てれば嬉しいです。

変数に文字列を代入

TEST=あいうえお
echo $TEST

実行結果

あいうえお

変数に空白を含む文字列を代入

空白もそのまま変数に格納される

TEST=あ い う え お
echo $TEST

実行結果

あ い う え お

変数の値を変数に代入

TEST_A=あいうえお
TEST_B=$TEST_A
echo $TEST_B

実行結果

あいうえお

変数の値と文字列を結合して代入

2 パターン紹介します

変数を${}で囲うパターン

変数を囲っておけば、文字列を""などで囲う必要はなくなる

TEST_A=あいうえお
TEST_B=${TEST_A}かきくけこ
echo $TEST_B

実行結果

あいうえおかきくけこ

文字列を""で囲うパターン

文字列を""で囲っておかないと変数への参照が正しくできない為、注意

TEST_A=あいうえお
TEST_B=$TEST_A"かきくけこ"
echo $TEST_B

実行結果

あいうえおかきくけこ

コマンドの実行結果を代入

2 パターン紹介します

``でコマンドを囲うパターン

TEST=`date '+%Y%m%d'` # 今日の日付(YYYYMMDD)
echo $TEST

実行結果(例)

20230421

$()でコマンドを囲うパターン

コマンドを囲う場合は${}ではないので、注意

TEST=$(date '+%Y%m%d')  # 今日の日付(YYYYMMDD)
echo $TEST

実行結果(例)

20230421

変数を参照するコマンドの実行結果を代入

2 パターン紹介します

``でコマンドを囲うパターン

囲われた変数は""でさらに囲う

TEST_A=$(date '+%Y%m%d')  # 今日の日付(YYYYMMDD)
TEST_B=`echo "$TEST_A" | awk '{print substr($0, 5)}'`   # 今日の日付から月日を取り出す
echo $TEST_B

実行結果

0421

$()でコマンドを囲うパターン

変数は${}で囲う

TEST_A=$(date '+%Y%m%d')  # 今日の日付(YYYYMMDD)
TEST_B=$(echo ${TEST_A} | awk '{print substr($0, 5)}')  # 今日の日付から月日を取り出す
echo $TEST_B

実行結果

0421

参考文献

https://shellscript.sunone.me/variable.html

GitHubで編集を提案

Discussion

ko1nksmko1nksm

後で間違いを指摘しますが、せめて動作確認をしてください。

さめのさめの

コメントありがとうございます。

確認したところ、少なくとも誤った記法(しかも実行結果と異なる記法)が本記事に含まれていることを確認しました。
誤りにつきましては、動作に問題ないことを確認した上で、修正したものを反映致します。

ko1nksmko1nksm

間違いに気づかれているようなので、修正をみて必要ならコメントします。