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

时间:2015-05-08 09:13:57

标签: bash scripting

如果未初始化相应的变量,我想在字符串中插入环境变量的值或默认值。

示例:

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'}"

2 个答案:

答案 0 :(得分:5)

请参阅Bash Default Values

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

答案 1 :(得分:5)

要实际设置变量的值,而不是仅在没有值的情况下扩展为默认值,您可以使用此成语:

: ${MY_VAR:=default}

等同于您原来的if声明。如果未设置或为空,则扩展具有实际更改MY_VAR的值的副作用。 :只是do-nothing命令,它提供了一个我们可以使用参数扩展的上下文,它被视为:忽略的参数。