ヌルマージモードでのシェル変数の設定

ヌルマージモードでのシェル変数の設定

私は変数をリストの最初の「nullではない」値に設定できる「nullマージ」が大好きです。多くの言語がこれをサポートしています。たとえば、次のようになります。

氏#:

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

JavaScript:

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

...など。変数を設定するためにBashでこれを行うことができるかどうか疑問に思います。

偽:

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

答え1

POSIXシェル(およびinclusion bash)に対応する内容は次のとおりです。

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

また見なさい:

${FOO-${BAR-default}}

バリアントは空の文字列であるかどうかではなく、変数が設定されているかどうかを確認します(変数が設定されているが空の場合は異なります)。

答え2

間接的。

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

関連情報