シェルスクリプト 変数 使い方

バイオインフォ道場、くまぞうです。

シェルスクリプト 変数

スポンサーリンク



シェルスクリプト 変数 名前のつけ方と定義

シェルで変数を使うとき、最初に注意することです。

  • 名前には、アルファベット(大/小文字を区別)・数字・アンダースコアを使える。
  • 名前には、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

シェルスクリプト 変数について

シェル変数の名前のつけ方は、他のプログラミング言語に似ているところがあります。しかし、慣例では「アルファベット大文字を使う」となっているので、メンテナンスなどを考えた場合、それに習う方が無難と思われます。

注意が必要なのは、値を代入するときの=前後のスペース。スペースを入れないように注意しましょう。はじめのうちは、これに関するミスが一番多いと思います。値の参照をしたいときは$を変数名の前につけます。場合によっては、中括弧をつける方法で記述すると変なエラーを防げるかもしれません。

文字列内で変数を展開したい場合は、ダブルクォーテーション内なのかをチェックします。

スポンサーリンク