• ベストアンサー

シェルスクリプトの[-z "${変数名:-}"]の意味について

Linuxでシェルスクリプトをみていると以下のように if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] -z "${変数名:-}"という記載をみかけます。 シェルスクリプトの該当箇所を読んだのですがわかりませんでした。 -zは分かるのですが。 よければ教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10359)
回答No.2

#1の方がお書きの通り「「NOLOCALEが未定義ないし空」であれば空」ですが、それなら単に"$NOLOCALE"と書けばいいので、おそらく元は :- の後に何か書いてあったのが修正の過程で無くなったんでしょう。 一般的には、${AAAA:-ZZZZ} というのは、 if [ -z "$AAAA" ];then ZZZZ;else "$AAAA";fi みたいな意味です。デフォルト値 ZZZZ みたいな。

その他の回答 (1)

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

http://matsui.homeunix.com/index.php?Bash%A5%B7%A5%A7%A5%EB%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8%2F%C6%C3%BC%EC%A4%CA%CA%D1%BF%F4%C5%B8%B3%AB 変数に値が入っていればその値、入っていなければ空文字列(-の後に文字列がないため)、という展開をするようですね。 変数が未定義か値が入ってない場合の式展開エラーを防ぐ目的でしょうか。

関連するQ&A