|
■
変数について
変数への値の代入、変数の値の参照について説明します。
変数名に使える文字は、英数字と「 _ 」(アンダーバー)のみで、必ず英数字ではじめる必要があります。値を代入するには「=」で変数名と値を結びます。
また、変数の値を参照するには「$変数名」とします。
ファイル名 : test3.1.sh
1: #!/usr/bin/sh
2: var="テストです。"
3: echo $var
|
実行結果は以下のようになります。
1: $ chmod u+x test3.1.sh
2: $ test3.1.sh
3: テストです。
|
注意すべきは、「=」の前後に半角スペース等を入れてはいけないことです。ほかの言語であれば、前後のスペースは構わないことが多いですが、シェルスクリプトの場合には、ここら辺が厳しいです。
また、以下のような点にも注意が必要です。
-
空白、タブ、改行などを含んだ値を代入するには、値を引用符で囲む。
-
値の代入されていない変数は空文字となる。
-
変数参照時に変数が誤解釈されそうな場合には「""」または「{ }」で変数名を囲む。
以下に例を示します。
ファイル名 : test3.2.sh
1: #!/usr/bin/sh
2: var1="これはvar1です。"
3: var10="これはvar10です。"
4:
5: echo $var2
6: echo $var10
7: echo ${var1}0
|
実行結果は以下のようになります。
1: $ chmod u+x test3.2.sh
2: $ test3.2.sh
3:
4: これはvar10です。
5: これはvar1です。0
|
実行結果の3行目は、test3.2.shの5行目の結果で、値の代入されていない var2 という変数を参照しているため、空文字が返されています。
test3.2.shの「$var10」は $var1 と 0 の文字連結とも解釈できそうですが、実際には、実行結果の6行目のように $var10
に解釈されます。これを、正確に $var1 と 0 の文字連結と解釈させるには、test3.2.sh の 7行目のように ${var1}0 と変数を { }
で囲みます。
また、これは「 "$var10" 」と書いても同じ結果になります。
まとめると以下のようになります。
変数名に使える文字
- 英数字と「 _ 」(アンダーバー)のみで、必ず英数字ではじめる
変数の代入
- 変数名=値
値の参照
- $変数名 or ${変数名} or "$変数名"
注意点
- 代入コマンド「=」の前後にスペースを入れない
- 空白、タブ、改行などを含んだ値を代入するには、値を引用符で囲む。
- 値の代入されていない変数は空文字となる。
- 変数参照時に変数が誤解釈されそうな場合には「""」または「{ }」で変数名を囲む。
|
|