web-dev-qa-db-ja.com

シェル変数をnullの合体方法で設定する

私は "null合体"が本当に好きです。ここでは、変数をリスト内の最初の "非null"値に設定できます。多くの言語がこれをサポートしています。例えば:

C#:

String myStr = string1 ?? string2 ?? "default";

JavaScript:

var myStr = string1 || string2 || "default";

...等。変数を設定するためにこれをBashで実行できるかどうか知りたいだけです。

疑似:

MY_STR=$ENV{VAR_NAME}??$ANOTHER_VAR??"default";
24
devios1

POSIXシェル(bashを含む)と同等のものは次のようになります。

${FOO:-${BAR:-default}}

以下も参照してください。

${FOO-${BAR-default}}

変数が空の文字列に解決されるかどうかではなく、変数が設定されているかどうかをチェックするバリアント(変数は設定されているが空である場合に違いがあります)。

35

直接ではありません。

my_str="${var_name:-${another_var:-default}}"