Bash 内置变量赋值通过 ${var:-""}

Bash built-in, Variable Assignment through ${var:-""}

请解释一下,这个结构是什么意思:

foo=${bar:-"const"}
foo=${bar:+"const"} # not sure about using this construction at all

例如:

PATH=${PATH}:${BUILD_DIR:-"/SCA"}/tools
...
if [[ ${DEBUG:-""} = "ON" ]] ; then <...>; fi

我试图在 ABSG 上查看它,试图阅读 man builtin,但现在对我来说仍然很复杂。
AFAIK,它就像分配给 $foo 一些值,对变量 $bar.

进行 NULL 检查

${bar-const} 评估字符串 'const' is bar is unset. 如果 bar 未设置或为空字符串,${bar:-const} 的计算结果为字符串 'const'。 如果设置了 bar,${bar+const} 的计算结果为字符串 'const'。 ${bar:+const} 如果设置了 bar 而不是空字符串,则计算结果为字符串 'const'。

后两个否则为空字符串,前两个否则为 $bar。