2010年8月9日月曜日

シェル変数

httpdスクリプトを眺めていて以下の文が分からなかった

HTTPD_LANG=${HTTPD_LANG-"C"}

HTTPD_LANGとゆう変数に値をセットしているってことは何となく分かるけどハイフン('-')と"C"は何を意味するん??
でもって、調べたところ
${変数名}は変数名の区切りを分かりやすくするために{}でくくっているものと理解!

例えば、変数名がVALUEという名前だった場合、${VALUE}とする。
なぜそのようにするかといえば、

$ echo $VALUEA

とした場合、VALUEAまでが変数名なのか、VALUEに続いてアルファベットAを表示させたいのかが分からなくなってしまうからである。
(ちなみに上の例ではVALUEAが変数名となる)

そして肝心の{}でくくられたハイフンの意味はHTTPD_LANGが定義されていなければ??(それともHTTPD_LANGに何もセットされていなければ??)、"C"をセットするとゆう意味らしい。

後でもうちょい調べよう

追跡取材でハイフンの意味が分かりました
${変数名-値}


${変数名:-値}

のコロン(:)を省略した形で変数が存在した場合、変数名の値を返し
存在しない場合、値を(ハイフンの右側の値)返すという意味らしく
「変数展開」と呼ぶものみたいだ
なので、上記の例
HTTPD_LANG=${HTTPD_LANG-"C"}

は、HTTPD_LANGが定義されている場合、
HTTPD_LANGの値をそのままセットし
定義されていない場合
"C"をHTTPD_LANGにセットするという意味になる

0 件のコメント:

コメントを投稿