如果未初始化相应的变量,我想在字符串中插入环境变量的值或默认值。
示例:
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'}"
答案 0 :(得分:5)
→ echo "my variable contains ${MY_VAR:-default}"
my variable contains default
答案 1 :(得分:5)
要实际设置变量的值,而不是仅在没有值的情况下扩展为默认值,您可以使用此成语:
: ${MY_VAR:=default}
等同于您原来的if
声明。如果未设置或为空,则扩展具有实际更改MY_VAR
的值的副作用。 :
只是do-nothing命令,它提供了一个我们可以使用参数扩展的上下文,它被视为:
忽略的参数。