Hatena::ブログ(Diary)

わからん

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.

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

Google