シェル変数と環境変数
シェル変数
多くのプログラミング言語と同じくbashでも変数が使える
変数の作成は「変数名=値」で行う
$ directory=/home/zykb
他のプログラミング言語と違う点として、=記号の左右にスペースやタブを入れてはいけない
$ directory = home/zykb directory: command not found
bashにおいては変数の値はデフォルトで文字列として扱われるので' 'や" "で囲む必要はない
ただし、スペースやタブを含めて文字列として扱いたい場合には' 'または" "で囲む
file='Document files'
変数の参照には変数名の前に$をつける
$ directory = home/zykb $ echo $directory home/zykb
変数部分を明示的に指定するには{ }で囲む
$ item=pen $ echo I have many ${item}s I have many pens
シェル変数はそのシェル内でのみ有効で、変数を引き継ぐことが出来ない
$ hello='I am zykb'
hello.sh
#!/bin/sh echo ${hello}
なにも表示されない
CLI
$ ./hello.sh
シェルからコマンドを実行すると、現在のシェルから子プロセスが作成される。このときシェル変数は引き継がれないためなにも表示されなかった。
一方で環境変数は引き継がれるため、コマンドから参照できる
環境変数を作成するためにはexportコマンドを使用する
$ HELLO='I am zykb' $ export HELLO
hello.sh
#!/bin/sh echo ${HELLO}
$ ./hello.sh I am zykb
環境変数は慣習として大文字を使う