はじめに
実務でシェルをかく機会があり、そこで変数を代入したり変数を指定して取得したりするコードをかいています。
ややこしいのを一旦整理してみます。
シェルに値を宣言し代入
変数に代入するときは=を使います。等号の前後にスペースを入れてはいけません。
.sh
STAGE=st
.sh
Hey="Hello, World!"
変数の参照パターン1
変数名の前に$をつけます。
簡潔でよみやすく、一般的な用途で使いたおせそうですね。
.sh
echo $STAGE
実行結果
st
変数の参照パターン2
変数を${}で囲うパターン
変数名の境界を明確にしてくれます。変数後に文字列が続くときに有効です!
.sh
TEST_A=apple
TEST_B=${TEST_A}pie🍎
echo $TEST_B
実行結果
applepie🍎
変数の参照パターン3
文字列を""で囲うパターン
空白の値を文字列として扱います。空白を含む値や特殊文字を保持します。
.sh
message="Hello World"
echo $message
実行結果
Hello World
コマンドの実行結果を参照し代入する
パターン1
``でコマンドを囲うパターン
.sh
TODAY=`date '+%Y%m%d'`
echo $TODAY
実行結果
20241021
パターン2
$()でコマンドを囲うパターン
.sh
TODAY=$(date '+%Y%m%d')
echo $TODAY
実行結果
20241021
変数を参照するコマンドの実行結果を代入し出力
パターン1
``でコマンドを囲うパターン
.sh
MONTH_DAY=$(date '+%Y%m%d')
MONTH_DAY_OUTPUT=`echo "$MONTH_DAY" | awk '{print substr($0, 5)}'`
echo $MONTH_DAY_OUTPUT
実行結果
1021
パターン2
$()で囲うパターン
.sh
MONTH_DAY=$(date '+%Y%m%d')
MONTH_DAY_OUTPUT=$(echo ${MONTH_DAY} | awk '{print substr($0, 5)}')
echo $MONTH_DAY_OUTPUT
実行結果
1021
おわりに
変数を参照するさいに、$()
なのか${}
なのか、よくわからなくなりましたがここでまとめたので頭すっきりです。
ガンガンつかっていきましょう。
参考