シェルスクリプトの変数の代入・参照、値が空のときの処理

参考 : プロフェショナル・シェルプログラミング (アスキー書籍)

シェルスクリプトの変数の代入と参照

# 変数の代入は前後にスペースを入れない
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