2007年10月24日

shの変数の件

sh(bash)の変数についてメモです。

変数は"パラメータ(parameter)"といいます。
name=[value]

で値を設定します。
name = [value]

のように=の前後にスペースを空けてはいけません。
a=abc.def
echo $a

と$をつけて値を参照します。
unset $a

でパラメータを削除します。値をクリアするのではなくて、パラメータ自体を削除します。

./aaa.sh a b c

と引数つきでシェルスクリプトが呼ばれた時、$1, $2, $3はそれぞれ、a, b, cが設定されています。位置パラメータといいます。
引数が10以上の場合その値を参照するのに${10}, ${11}と{}が必要になります。
$1 = x

とは書けませんが、setを使って
set $1 x

と$1に値を設定することが可能です。

パラメータはブレース{}を使って展開する事ができます。

a=abc.defの時
${a} -> abc.def
${a#abc} -> .def 先頭の'abc'が削除されます。
${a%.def} -> abc 末尾の'.def'が削除されます。
${a/bc/xy} -> axy.def 文字列を置換します。

${b:-BBB} -> BBB $bが空か設定されていないとBBBになります。
echo $b -> '' ${b:-BBB}では$bに値は設定されません。

${c:=CCC} -> CCC $cが空か設定されていないとCCCになります。
echo $c -> CCC ${c:-CCC}では$Cに値が設定されます。

${d:?error desu!} -> ./aaa.sh: line 5: d: error desu! $dが空か設定されていないとエラーになります。'error desu!'がエラー出力されます。

e=xxx
${e:+EEE} -> EEE パラメータが設定されていると'EEE'になります。
f=''
${f:+FFF} -> '' パラメータが設定されていないと''になります。


他にもあるけどこれくらいで。
posted by ほえ at 11:08| Comment(0) | TrackBack(0) | Linux | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/62180442
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。