Day: April 27, 2007

展開

BASHの変数展開機能は豊富で使いこなせると効率的なプログラミングができる.ただし,BASH独自の機能が多いので,他のシェルスクリプトへの移植性が下がる.展開コマンド実行evalコマンド算術展開変数展開 展開 何かを入力したとき,それが何なのかを突き止めてくれる,それが展開である.ls $HOMEとした場合,$HOMEが何なのかを突き止めて(この場合,変数の値を調べて),ls /home/hogeとしてくれるのが展開である. コマンド実行 あるコマンドに引数に別のコマンドの実行結果を代入することができる.それには$(command)とする.以下に例を示す.set $(date)while [ “$1” != “” ]doecho $1shiftdoneこれを実行すると,パラメータ変数にdateコマンドの実行結果が割り当てられ,それらを順に表示する.setコマンドの引数にdateコマンドの出力が渡されているのである. evalコマンド evalコマンドは引数を読み込んで一つのコマンドを生成する.そしてそのコマンドを実行する.以下に例を示す.a=dateeval b=’$(‘$a’)’echo $bまずaにdateという文字列を代入する.evalコマンドにはまず変数aが展開されてb=$(date)が渡される.そしてevalコマンドはb=$(date)というコマンドを実行する.そして最終的にbにdateコマンドの出力が代入され,その値がechoコマンドによってbの値が出力去れる.もしevalがなければbの値は$(date)という文字列になってしまう.この例を応用していくと,変数に動的に代入された,コマンドを示す文字列を実行することができる. 算術展開 算術展開は計算をして,その値に展開してくれる.算術展開は$((式))である.例を以下に示す.x=10echo … More 展開