トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

シェル変数、環境変数

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}
${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}
${var%%pattern}

#と逆でvarの値の後ろからpatternにマッチする部分が削除された状態で展開される。%の場合は最短一致、%%は最長一致となる。patternにはパス名の展開と同じ規則が適用される。

${var/pattern/str}
${var//pattern/str}
${var/pattern}
${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
[カテゴリ: プログラミング言語 > Shell]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2019年04月15日 18時49分48秒