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

Hes*_*oon 3 bash scripting

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

例:

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)

Mic*_*ohl 7

请参阅Bash默认值

? echo "my variable contains ${MY_VAR:-default}"
my variable contains default
Run Code Online (Sandbox Code Playgroud)

  • 在不需要详尽解释的情况下,真的很难找到答案吗? (2认同)

che*_*ner 6

要实际设置变量的值,而不是仅扩展为没有值的默认值,可以使用以下惯用法:

: ${MY_VAR:=default}
Run Code Online (Sandbox Code Playgroud)

这相当于您的原始if声明。MY_VAR如果未设置或为空,则扩展具有实际更改其值的副作用。该:只是什么都不做的命令,它提供了一个背景下,我们可以使用参数扩张,这被视为一个论点,即:忽略。