シェルスクリプトも簡易的なものではありますが一種のプログラム言語であり、C言語やVisualBasicなどの言語と同じように変数を定義することもできます。
シェルスクリプトでの変数のことをシェル変数と言います。
シェル変数にはシェルの動作環境を設定するためのあらかじめ定義されている変数と自分で新たに定義する変数があります。
まず一度、setコマンドを実行してください。
$ set BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu") BASH_VERSION='3.2.25(1)-release' COLORS=/etc/DIR_COLORS.xterm COLUMNS=90 CVS_RSH=ssh DIRSTACK=() EUID=500 GROUPS=() G_BROKEN_FILENAMES=1 ~ 省略 ~
setコマンドを実行すると上記のように、いろいろ表示されると思います。
この表示された一行一行がシェル変数になります。
次に、シェル変数を新たに定義してみましょう。
$ hensu01=Hello
これで変数定義は完了です。
意味としては、「hensu01という変数に、Helloという値を代入する」となります。
では、今の変数が本当にシェル変数として定義されているかsetコマンドで確認してみましょう。
$ set BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu") BASH_VERSION='3.2.25(1)-release' COLORS=/etc/DIR_COLORS.xterm COLUMNS=90 CVS_RSH=ssh DIRSTACK=() EUID=500 GROUPS=() G_BROKEN_FILENAMES=1 ~ 省略 ~ hensu01=Hello tmpid=500 ~ 省略 ~
変数「hensu01」が表示されているかと思います。
では次に今定義した変数を削除してみましょう。
$ unset hensu01
これでもう一度setコマンドを実行すると変数「hensu01」は表示されないはずです。
なお、シェル変数はシェルごとに定義されます。別のシェルを起動すると、シェル変数は引き継がれません。シェル変数を引き継ぐには、Bシェルならexport、Cシェルならsetenvを使います。