2011.11.23
■[シェルスクリプト] 変数が未定義かどうか判別する
「覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54」を読んでいて、わからなくて調べたところのメモ。
以下は、レシピ2.3 で紹介されている変数が未定義かどうか判別するコードです。
#!/bin/sh undef="NO" if [ "${v-UNDEF}" = "UNDEF"]; then #(1) if [ "$v" = ""]; then #(2) undef="YES" fi fi
(1) がわからなかったのですが、${v-UNDEF} のハイフン以降が、v が未定義だった場合のデフォルト値として、v に設定されるという構文でした。(2) は本で解説されている通り、もともとの v の値が UNDEF ではないことの確認です。
man bash より。コロンの有無による違いは、「入門UNIXシェルプログラミング」p46 あたりを参照。
${parameter:-word}
Use Default Values. If parameter is unset or null, the expansion of word is substituted.
Otherwise, the value of parameter is substituted.
