- 作者: Cameron Newham,Bill Rosenblatt,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2005/10/27
- メディア: 大型本
- 購入: 4人 クリック: 103回
- この商品を含むブログ (40件) を見る
気になったことはブログに残しておくことで、後から自然と見返す回数も増えると思うので書いていこうと思う。
今日は4章の「基本的なシェルプログラミング」を読み進めた。
bash(というかBorne Shell)のシェル変数には特殊な組み込み変数である位置パラメータというものがある。
位置パラメータが何をしてくれるかというと、シェルスクリプトに渡された引数を参照できるようにしてくれる。
具体的には、1つ目、2つ目、3つ目の引数が$1, $2, $3というシェル変数で参照可能になる。
位置パラメータはシェルスクリプト呼び出し時の引数を参照可能にするだけでなく、関数呼び出し時の引数も参照可能にしてくれる。
このときの関数内での位置パラメータはローカル変数として扱われる。
一方で、関数の中で定義されるその他の変数はグローバル変数となる。
ここら辺の情報をまとめて検証するシェルスクリプトは、以下のようになる。
#!/bin/bash function afunc { echo in function: $0 $1 $2 var1="in function" echo var1: $var1 } var1="outside function" echo var1: $var1 echo $0: $1 $2 afunc funcarg1 funcarg2 echo var1: $var1 echo $0: $1 $2
Solaris 10上での実行結果は以下のような感じ。
bash-3.00$ ./sample.sh arg1 arg2 var1: outside function ./sample.sh: arg1 arg2 in function: ./sample.sh funcarg1 funcarg2 var1: in function var1: in function ./sample.sh: arg1 arg2 bash-3.00$
関数内で変更されたvar1が関数外でも影響を受けているのが確認できる。