シェルスクリプト 変数 使い方
バイオインフォ道場、くまぞうです。
シェルスクリプト 変数
シェルスクリプト 変数 名前のつけ方と定義
シェルで変数を使うとき、最初に注意することです。
- 名前には、アルファベット(大/小文字を区別)・数字・アンダースコアを使える。
- 名前には、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
シェルスクリプト 変数について
シェル変数の名前のつけ方は、他のプログラミング言語に似ているところがあります。しかし、慣例では「アルファベット大文字を使う」となっているので、メンテナンスなどを考えた場合、それに習う方が無難と思われます。
注意が必要なのは、値を代入するときの=
前後のスペース。スペースを入れないように注意しましょう。はじめのうちは、これに関するミスが一番多いと思います。値の参照をしたいときは$
を変数名の前につけます。場合によっては、中括弧をつける方法で記述すると変なエラーを防げるかもしれません。
文字列内で変数を展開したい場合は、ダブルクォーテーション内なのかをチェックします。