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