Bash の基本的な変数

Bashスクリプト入門

Alex Scriven

Data Scientist

変数の代入

他の言語同様、= で変数を代入できます。

var1="Moon"

次に $ で参照します。

echo $var1
Moon
Bashスクリプト入門

文字列変数の代入

変数名は自由に(分かりやすく!)付けられます:

firstname='Cynthia'
lastname='Liu'

echo "Hi there" $firstname $lastname
Hi there Cynthia Liu

両方の変数が出力されました。

Bashスクリプト入門

$ の付け忘れ

$ を付け忘れると、変数ではありません。

firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bashスクリプト入門

変数を(正しく)代入しない例

Bash は変数作成時の空白に厳格です。空白に注意!

var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
Bashスクリプト入門

シングル/ダブル/バッククオート

Bash では、引用符の種類で意味が変わります。変数作成時も表示時も同様です。

  • シングルクオート ('sometext') = 中身を文字どおり解釈
  • ダブルクオート ("sometext") = 基本は文字どおり。ただし $ とバッククオート は展開

最後は「シェルの中のシェル」を作ります。CLI 呼び出しに便利。バッククオートで行います。

  • バッククオート (`sometext`) = コマンドを実行し、STDOUT を変数に取り込む
Bashスクリプト入門

変数の作り方の違い

異なる変数の作り方の効果を見てみましょう

now_var='NOW'

now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Bashスクリプト入門

date プログラム

バッククオートを示すのに date プログラムが便利です

このプログラムの通常の出力:

date
Mon  2 Dec 2019 14:07:10 AEDT
Bashスクリプト入門

シェルの入れ子

ここでシェルの入れ子を使いましょう:

rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.

echo と組み合わせて、date の出力をその場で取得しました。

シェルの中でシェルを使いました!

Bashスクリプト入門

括弧 vs バッククオート

バッククオートには同等表現があります:

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スクリプト入門

練習しましょう!

Bashスクリプト入門

Preparing Video For Download...