2

変数が設定されていない場合にパラメータ展開の形式を使用し${parameter:-word}てデフォルト値を評価する場合、引用符のベスト プラクティスは何ですか?

たとえば、set を使用した Bash シェル スクリプトを想定して-u(未定義または未設定の変数が評価されたときにエラーを生成するため)、変数に値があるかどうかをテストするには、if [[ -z "$FOO" ]]?

if [[ -z "${FOO:-}" ]]

また

if [[ -z ${FOO:-""} ]]

または、他の何か?

4

2 に答える 2

6

の最新バージョンbash(この記事の執筆時点では 4.2) を使用している場合は、この-vオプションを使用して、変数をまったく展開せずに設定されているかどうかをテストできます。

if [[ -v FOO ]]; then
    echo "FOO=$FOO"
else
    echo "FOO not set"
fi

古いバージョンを使用している場合は、そのまま使用します

if [[ -z ${FOO:-} ]];

引用符は必要ありません。IMO では、これが最もきれいに見えます。

于 2014-04-30T22:52:07.810 に答える
0

私はこのようにするのが好きです

if (( ! ${#FOO} ))

于 2014-04-30T22:47:53.583 に答える