0

次の形式のifステートメントを作成しました。

if [ -n "${VAR:-x}" ]; then
   #do something
   export VAR=#something
fi

私のシェルスクリプトはこのステートメントを2回呼び出し、驚くべきことに条件を2回渡します。

[ヒント(おそらく...):この正確なコードは、インクルードされたファイルの関数で繰り返されます。ifステートメントは、関数を呼び出す前に最初に評価されます。関数が呼び出されたときに「再度」評価されます。]

ここで何が問題なのですか?-xフラグを正しく理解していませんか?

ありがとう!

4

1 に答える 1

4

${VAR:-x}が設定されていない場合VARは文字列を置き換え、xそうでない場合はの値を置き換えますVAR

同様に、ここで説明されているようにが設定されていない場合は、の値または文字列${FOO:-bar}を置き換えます。FOObarFOO

これは、空白でないかどうかをチェックする手段-n "${VAR:-x}"として常に真になり、空白になることはないことを意味します。-n"${VAR:-x}"

于 2009-05-28T10:56:49.400 に答える