Shell

シェルスクリプトの入門編2:変数について理解しよう

今回のポイント

  • 変数への代入は空白を入れてはいけない
  • 変数の値を参照するときは$を先頭につける
  • シェル変数はそのプロセス内だけ、環境変数は子プロセスからも参照できる

それでは、シェルスクリプトでの変数の扱い方を覚えていきましょう。

変数への代入

シェルスクリプトで変数に値を代入するときには、以下のような形式で記述します。

var1が変数名、100が代入値である。

注意しないといけないのは、間に空白を挟んではいけないことだ。

つまり、

こういうのは駄目

また、代入値で途中に空白があってもいけない

つまり、

こういうのも駄目

もし、スペースを入れたい場合は'(シングルクォーテーション)"(ダブルクオーテーション)で囲まないと行けない

つまり、

これならOK

変数の値を参照する

変数に値を代入できたら、次はそれを出力してみよう。

シェルスクリプトでは、変数名に$をつけることでその値を取り出すことができる。

変数以外の文字列と連結して出力したい場合だと、変数とそれ以外の文字との区別をしなければいけない。

例えば、var1に0を2つつけて出力したい場合

では$var100という変数名の値を出力しようとしてしまい、その変数に対して代入は行っていないから何も出力はされないはず。

こういう場合は変数名を{}で囲って上げれば変数とその他の文字列の区別をして出力することができる。

シェル変数と環境変数

シェル変数とは現在動いているプロセスでしか参照できない変数なので、配下で別のプロセスで変数の値を呼び出すことができない。

一方で環境変数は配下のプロセスでもその値を参照することが可能である。

環境変数の例として、LANGというのがある。

下のブログラムファイルを作成して、実行してみれば値に代入していないのに、参照が可能なのが分かる。

echo-lang.sh

実行、

 

一方、普通にシェル変数を宣言しただけでは、配下のプロセスでは値は引き継げない。

echo-shell-value.sh

呼び出す前にvar1に値を代入して実行、

var1の内容は出力されなかった。

出力させたい場合は、環境変数にしなければいけない。

方法は簡単でexport 変数名を実行するだけである。

シェルスクリプト内で別のシェルスクリプトを呼び出すときにも、これは使える。

例えば、

parent.sh

child.sh

parent.shからchild.shを呼び出して、var1の値が出力されているのが確認できる。

まとめ

  • 変数の代入は変数名=代入値で間にスペースを入れては駄目
  • 変数の出力は$変数名でその他文字列との区別をしたいときは、${変数名}とする。
  • シェル変数は配下のプロセスでは値を引き継げないので、export 変数名で環境変数にすることで出力できるようになる。

 

-Shell

© 2023 Shiro's secret base