如果在字符串中为空,则插入变量值或默认值

Insert variable value or default value if empty in a string

我想在字符串中插入一个环境变量的值,如果相应的变量没有被初始化,我想插入一个默认值。

示例:

if [ -z $MY_VAR ];
then
    MY_VAR="default"
fi

echo "my variable contains $MY_VAR"

然而,我在我的字符串中使用了很多变量,测试使我的脚本混乱。

有没有办法在我的字符串中创建三元表达式?

我想要实现的示例(它不起作用):

echo "my variable contains ${-z $MY_VAR ? $MY_VAR : 'default'}"

Bash Default Values

→ echo "my variable contains ${MY_VAR:-default}"
my variable contains default

要真正设置变量的值,而不是仅仅在没有值的情况下扩展为默认值,您可以使用这个习惯用法:

: ${MY_VAR:=default}

这等同于您原来的 if 语句。如果 MY_VAR 未设置或为空,则扩展具有实际更改值的副作用。 : 只是一个什么都不做的命令,它提供了一个上下文,我们可以在其中使用参数扩展,它被视为 : 忽略的参数。