Bashスクリプト入門
Alex Scriven
Data Scientist
他の言語同様、= で変数を代入できます。
var1="Moon"
次に $ で参照します。
echo $var1
Moon
変数名は自由に(分かりやすく!)付けられます:
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
両方の変数が出力されました。
$ を付け忘れると、変数ではありません。
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash は変数作成時の空白に厳格です。空白に注意!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Bash では、引用符の種類で意味が変わります。変数作成時も表示時も同様です。
'sometext') = 中身を文字どおり解釈"sometext") = 基本は文字どおり。ただし $ とバッククオート は展開最後は「シェルの中のシェル」を作ります。CLI 呼び出しに便利。バッククオートで行います。
異なる変数の作り方の効果を見てみましょう
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
バッククオートを示すのに date プログラムが便利です
このプログラムの通常の出力:
date
Mon 2 Dec 2019 14:07:10 AEDT
ここでシェルの入れ子を使いましょう:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
echo と組み合わせて、date の出力をその場で取得しました。
シェルの中でシェルを使いました!
バッククオートには同等表現があります:
rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.
動作は同じですが、バッククオートは古い書き方です。現代では括弧の方が一般的です。(See http://mywiki.wooledge.org/BashFAQ/082)
Bashスクリプト入門