7

バインドされていない変数が参照されている場合、スクリプトが失敗することはわかってset -uいますが、私の bash スクリプトでは、次のように、if ステートメント内で特定の変数が設定解除されているかどうかを確認してから、何かを実行しようとしています。

if [[ -z "${SOME_VARIABLE}" ]] ; then
    echo '$SOME_VARIABLE' is not set
else
    do_stuff_with_SOME_VARIABLE
fi

ただし、set -euプレリュードで上記を実行しようとすると、次のエラーが発生します。これは、私がやろうとしていることを考えると、少し直感に反するようです。

-bash: SOME_VARIABLE: unbound variable

[Process completed]

ご覧のとおり、$SOME_VARIABLE未設定のときに実際に使用しようとしているわけではないので、実際に未設定の変数を使用しようとしているときにスクリプトを失敗させる方法があるかどうかを知りたいです (変数を次のように渡すなど)。引数またはそれらに文字列操作を適用する) が、それらが設定されていないかどうかを確認するだけの場合ではありませんか?

4

1 に答える 1

9

拡張を使用できます:

if [ -z "${SOME_VARIABLE:-}" ]; then
    echo '$SOME_VARIABLE' is not set
else
    do_stuff_with_SOME_VARIABLE
fi

これは$SOME_VARIABLEnull に展開されます。パラメータ置換の詳細については、こちら${parameter:-default}を参照してください (上部近くのセクションを参照してください)。

于 2013-07-23T16:27:14.063 に答える