如果未初始化相应的变量,我想将环境变量的值插入字符串或默认值。
例:
if [ -z $MY_VAR ];
then
MY_VAR="default"
fi
echo "my variable contains $MY_VAR"
Run Code Online (Sandbox Code Playgroud)
但是,我在字符串中使用了很多变量,并且测试使脚本混乱。
有没有办法在我的字符串中做一个三元表达式?
我要实现的示例(不起作用):
echo "my variable contains ${-z $MY_VAR ? $MY_VAR : 'default'}"
Run Code Online (Sandbox Code Playgroud)
请参阅Bash默认值
? echo "my variable contains ${MY_VAR:-default}"
my variable contains default
Run Code Online (Sandbox Code Playgroud)
要实际设置变量的值,而不是仅扩展为没有值的默认值,可以使用以下惯用法:
: ${MY_VAR:=default}
Run Code Online (Sandbox Code Playgroud)
这相当于您的原始if声明。MY_VAR如果未设置或为空,则扩展具有实际更改其值的副作用。该:只是什么都不做的命令,它提供了一个背景下,我们可以使用参数扩张,这被视为一个论点,即:忽略。