シェルスクリプト 変数
シェルスクリプト 変数 名前のつけ方と定義
シェルで変数を使うとき、最初に注意することです。
- 名前には、アルファベット(大/小文字を区別)・数字・アンダースコアを使える。
- 名前には、1文字目に数字は使えない。
- 名前には、アルファベットの大文字を使うのが慣例。
- シェル変数に値をセットするとき、空白は入れない。
# アルファベット(大文字/小文字区別)・数字・アンダースコアを使える OK $ MY_VAR123=1 $ echo $MY_VAR123 1 # アルファベット(大文字/小文字区別)・数字・アンダースコアを使える NG $ MY-VAR=1 MY-VAR=1: コマンドが見つかりません # シェル変数の名前には、1文字目に数字は使えない $ 1MYVAR=1 1MYVAR=1: コマンドが見つかりません # シェル変数に値をセットするとき、空白は入れない $ MYVAR = 2 MYVAR: コマンドが見つかりません
シェルスクリプト 変数 値の参照方法
シェル変数に格納した値を参照する場合は、変数の前に$をつけます。名前が判別しにくい(長い・他の変数と間違えそう等)場合は、中括弧で括る書き方(${var})が便利です。
# 変数に値をセット
$ MY_VAR123=1
# 変数にセットした値を参照
$ echo $MY_VAR123
1
# 変数にセットした値を参照({}で囲んでも同じ)
$ echo ${MY_VAR123}
1
# 変数を参照して文字列連結
$ echo "MY_VAR123 = "${MY_VAR123}
MY_VAR123 = 1
$ MY_STR="ABC"
$ echo ${MY_STR}DEF
ABCDEF
# 変数MY_STRとDEF(文字列のつもり)を区別できず、別の変数と判別された
$ echo $MY_STRDEF
シェルスクリプト 変数 展開
文字列内で変数を展開する(”abcde $変数 fg” など)したい場合は、ダブルクォーテーションで囲めば変数を展開することができます。シングルクォーテーションで囲むと、ただの文字と判断されてしまい、変数を展開することができません。
# 文字列内で変数を展開
$ echo "abcde $MY_STR fg"
abcde ABC fg
# 文字列内で変数を展開({}で囲んでも同じ、区別しやすい)
$ echo "abcde${MY_STR}fg"
abcdeABCfg
# 文字列内で変数を展開できない(シングルクォーテーションで囲んだ場合)
$ echo 'abcde $MY_STR fg'
abcde $MY_STR fg
シェルスクリプト 変数について
シェル変数の名前のつけ方は、他のプログラミング言語に似ているところがあります。しかし、慣例では「アルファベット大文字を使う」となっているので、メンテナンスなどを考えた場合、それに習う方が無難と思われます。
注意が必要なのは、値を代入するときの=前後のスペース。スペースを入れないように注意しましょう。はじめのうちは、これに関するミスが一番多いと思います。値の参照をしたいときは$を変数名の前につけます。場合によっては、中括弧をつける方法で記述すると変なエラーを防げるかもしれません。
文字列内で変数を展開したい場合は、ダブルクォーテーション内なのかをチェックします。
![バイオインフォ 道場 [bioinfo-Dojo]](https://bioinfo-dojo.net/wp-content/uploads/2016/03/some_object_luca-bravo-alS7ewQ41M8-unsplash.jpg)

