如果在字符串中为空,则插入变量值或默认值
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'}"
→ echo "my variable contains ${MY_VAR:-default}"
my variable contains default
要真正设置变量的值,而不是仅仅在没有值的情况下扩展为默认值,您可以使用这个习惯用法:
: ${MY_VAR:=default}
这等同于您原来的 if
语句。如果 MY_VAR
未设置或为空,则扩展具有实际更改值的副作用。 :
只是一个什么都不做的命令,它提供了一个上下文,我们可以在其中使用参数扩展,它被视为 :
忽略的参数。
我想在字符串中插入一个环境变量的值,如果相应的变量没有被初始化,我想插入一个默认值。
示例:
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'}"
→ echo "my variable contains ${MY_VAR:-default}"
my variable contains default
要真正设置变量的值,而不是仅仅在没有值的情况下扩展为默认值,您可以使用这个习惯用法:
: ${MY_VAR:=default}
这等同于您原来的 if
语句。如果 MY_VAR
未设置或为空,则扩展具有实际更改值的副作用。 :
只是一个什么都不做的命令,它提供了一个上下文,我们可以在其中使用参数扩展,它被视为 :
忽略的参数。