- 日本語 (ja)
- English (en)
最近の更新
Tag Cloud
このページへのアクセス
今日: 4 / 昨日: 1
総計: 757
- Dokuwiki.fl8.jp(374)
- 14 rsync(18)
- FreeBSD カーネル再構築(17)
- 05 rsync(17)
- IPMIコマンド(17)
最近の更新
このページへのアクセス
今日: 4 / 昨日: 1
総計: 757
変数にすでに値が入っている場合と何も値が入っていない場合で、動作が異なる代入/参照方法があります。
変数に値が代入されていれば新たにそこには代入しないけれど、値が入っていないときには代入しよう、というif文的な動作をする書き方です。
変数 | 説明 |
---|---|
${VAR:-word} | 変数VARに値が入っていないならwordを値として返す。 |
${VAR:=word} | 変数VARに値が入っていないならwordを代入する。 |
${VAR:?word} | 変数VARに値が入っていないならwordを出力する。 |
${VAR:+word} | 変数VARに値が入っているならwordを代入する。 |
${variable:offset} ${variable:offset:length}
マイナスを入れると後ろから指定
${variable: -offset} ${variable: -offset:length}
変数variableに代入されている値に対して、offset番目からlength分の文字列を切り出します。
最初の文字列が0番目です。lengthを省略すると最後までとして解釈します。
$ VAR=0123456789 $ echo ${VAR:2:6} 234567
${!prefix*}
文字列prefixで始まる名前の変数名を全て表示します。
$ VAR_1=0123 $ VAR_2=abcd $ VAR_3=wxyz $ echo ${!VAR*} VAR_1 VAR_2 VAR_3
${#variable}
変数variableに代入されている値(文字列)の文字数を表示します。
$#は位置パラメータの個数を表示しますが、それによく似ています。
$ VAR1=0123 $ VAR2="abcd xyz" $ echo ${#VAR1} 4 $ echo ${#VAR2} 8
${variable#word} ${variable##word}
変数variableに代入されている値(文字列)の
先頭部分が文字列wordに合致する時に、そこまでの文字列を削除します。
#が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。
文字列指定にはワイルドカードが使えます。
$ VAR=abc1234xyz987abcd1234efg $ echo ${VAR#abc} 123xyz987abcd1234efg
$ echo ${VAR#a*2}
3xyz987abcd1234efg
$ echo ${VAR##a*2}
34efg
$ echo ${VAR#*1234}
xyz987abcd1234efg
$ echo ${VAR##*1234}
efg
${variable%word} ${variable%%word}
変数variableの値(文字列)のうち、後方部分が文字列wordに合致する場合はそこまでの部分を削除します。
%が1個だと最短一致パターンとなり、2個だと最長一致パターンとで判断します。
文字列指定にはワイルドカードが使えます。
$ VAR=abcd1234xyz987abcd1234 $ echo ${VAR%1234} abcd1234xyz987abcd
$ echo ${VAR%d*4}
abc
$ echo ${VAR%%d*4}
34efg
$ echo ${VAR%34*}
abcd1234xyz987abcd12
$ echo ${VAR%%34*}
abcd12
${variable/pattern/string} ${variable//pattern/string}
変数variableの値(文字列)が文字列パターンpatternに合致すればその部分を文字列stringに置き換えます。
patternにはワイルドカードが利用できる為、最短一致と最長一致とが使えます。
/が1個は最短一致で、2個の時は一致する全てを置き換えます。
最短一致で1234をAAAに置き換える
$ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234/AAA} abcdAAAxyz987abcd1234abcd
最長一致で1234をAAAに置き換える
$ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1234//AAA} abcdAAAxyz987abcdAAAabcd
1で始まりaで終わる部分をBBBに置き換える
$ VAR=abcd1234xyz987abcd1234abcd $ echo ${VAR/1*a/BBB} abcdBBBbcd