以空合并方式设置 shell 变量

以空合并方式设置 shell 变量

我真的很喜欢“空合并”,您可以将变量设置为列表中的第一个“非空”值。许多语言都支持这一点,例如:

C#:

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

JavaScript:

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

...等等。我只是好奇是否可以在 Bash 中完成此操作以设置变量?

伪:

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

答案1

POSIX shell(因此包含bash)等效项是:

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

另请参阅:

${FOO-${BAR-default}}

变体检查变量是否已设置,而不是它是否解析为空字符串(这在变量已设置但为空的情况下有所不同)。

答案2

不直接。

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

相关内容