シェルスクリプトの変数の代入・参照、値が空のときの処理
参考 : プロフェショナル・シェルプログラミング (アスキー書籍)
シェルスクリプトの変数の代入と参照
# 変数の代入は前後にスペースを入れない name=Jonh # 変数の参照は"$"をつける echo $name # => John # これでもOK echo ${name} # => John # 文字列の中に変数を展開できる echo "Hello $name" # => Hello John # これでもOK echo "Hello ${name}" # => Hello John
シェルスクリプトの変数に値がセットされていないときの処理
変数 name が空であるときの処理。変数が空であるときにスクリプトを止めるという処理が簡単に書ける。
記号 | nameの値があるとき | nameが空のとき |
---|---|---|
${name:-hoge} | nameが使われる | hogeが使われる |
${name:=hoge} | nameが使われる | hogeが使われ、nameに代入される |
${name:?hoge} | nameが使われる | hogeが使われ、スクリプトが止まる |
# 変数 empty の値を空にする name=John empty= # 変数の値がセットされてればそのまま表示される echo ${name:-Mr.NONAME} # => John # 変数が空なら代わりの文字列が表示される echo ${empty:-Mr.NONAME} # => Mr.NONAME # 変数が空のとき、代わりの文字列を empty に代入する echo ${empty:=Mr.NONAME} # => Mr.NONAME # empty には "Mr.NONAME" がセットされている echo "Hello $empty" # => Hello Mr.NONAME # 変数が空のときにスクリプトが停止する novalue= echo ${novalue:?You need value of variable novalue.} # => novalue: You need value of variable novalue.
その他
name=John empty= # 変数に値がセットされているときの処理 echo ${name:+variable name has value} # => variable name has value # 変数に値がセットされていないと何も表示されない echo ${empty:+variable empty has value} # => # 変数の文字数 echo ${#name} # => 4