http://www.geocities.jp/geo_sunisland/variable.html !!!基本的なこと !変数に値を設定する VAR1=123456 VAR2=hogehoge VAR3=" a b c d e f g " !変数の値を参照する ・変数の値を表示 # 変数 VAR1 の値を表示 echo $VAR1 # 変数 VAR の値と「1」を表示 echo ${VAR}1 # 変数 VAR2 の値と変数 VAR3 の値を表示 echo ${VAR2}${VAR3} 変数内に改行文字がある場合 echo $test とすると、改行はスペースとして出力される。 echo "$test" とすると、改行がそのまま改行で出力される ・変数の値を他の変数へ設定する # 変数 VAR に変数 VAR1 の値を設定 VAR=$VAR1 # 変数 VAR に変数VARの値と「1」を設定(変数 VAR の値の最後に「1」を付加する) VAR=${VAR}1 # 変数 VAR に変数 VAR2 と変数 VAR3 の値を結合した値を設定 VAR=${VAR2}${VAR3} 変数の値を参照するには変数名に「$」を付ける。 変数の値を参照する場合は変数名の頭に「$」を付ける。参照する変数を明確にする場合は「{}」(中括弧)で変数名を囲む。 !コマンドの実行結果を変数に設定する VAR=`command` コマンドの実行結果を、エラーも含めて変数に設定したい場合は次のようにする。 VAR=`command 2>&1` バッククォートと同様の機能は「$(command)」でも実現可能。 VAR=$(command) !変数の値を変数名として値を参照する eval echo '$'$VAR 例 $ FOO="BAR" $ BAR="SUCCESS" $ eval echo '$'$FOO SUCCESS ※↑変数 FOO に設定されている値を変数名として参照している。 !!!文字列操作 http://open-groove.net/shell/summary-variables/ !${var#pattern}{{br}} ${var##pattern} varの値の先頭からpatternにマッチする部分が削除された状態で展開される。 #の場合は最短一致、##は最長一致となる。patternにはパス名の展開と同じ規則 が適用される。 $ echo ${animal} $ animal=”monkey:cat:dog:cow” $ echo ${animal} monkey:cat:dog:cow $ echo ${animal#monkey} :cat:dog:cow ←monkeyが削除された状態で出力 $ echo ${animal#m?} nkey:cat:dog:cow $ echo ${animal#m*} onkey:cat:dog:cow $ echo ${animal##m*} !${var%pattern}{{br}}${var%%pattern} #と逆でvarの値の後ろからpatternにマッチする部分が削除された状態で展開される。%の場合は最短一致、%%は最長一致となる。patternにはパス名の展開と同じ規則が適用される。 !${var/pattern/str}{{br}}${var//pattern/str}{{br}}${var/pattern}{{br}}${var//pattern} varの値のうちpatternにマッチする部分がstrに置換された状態で展開される。 /の場合は最初にマッチした部分のみが、//の場合はマッチする部分すべてが置き換えられる。 $ echo ${meal} ←変数が未設定 $ meal=”catfood:catmilk” $ echo $meal catfood:catmilk $ echo ${meal/cat/dog} dogfood:catmilk ←最初にマッチした”cat”のみdogに置換 $ echo ${meal//cat/dog} dogfood:dogmilk ←すべての”cat”がdogに置換された !${#var} 変数varの値の文字列に置き換えられる。 !オフセット位置から長さ分を取得 HOGE="abcdef" echo ${HOGE:0:2} $ ab echo ${HOGE:4:2} $ ef !オフセットから最後まで出力 HOGE="abcdef" echo ${HOGE:2} $ cdef !末尾からのオフセット位置を指定 マイナスを指定すると末尾からのオフセット位置になる HOGE="abcdef" echo ${HOGE:0:-2} $ abcd {{category2 プログラミング言語,Shell}}