if [ -n "${BASH-}" -o -n "${ZSH_VERSION-}" ] ; then hash -r 2>/dev/null fi
在哪里可以找到参考?谢谢。
a ${...}中的变量称为“参数扩展”。在在线手册或实际手册中 搜索该术语(第792行)。 该形式是在形式上相似。仅在展开前一行(行810)说明了差异: ${var-}``${var:-}``:-
${...}
${var-}``${var:-}``:-
… bash测试未设置或为null的参数。省略冒号只会对未设置的参数进行测试。
因此,这种形式是测试仅当变量被复位( 和 不为空),并且替换整个扩张${...}为后的值-,在这种情况下是 空 。
-
因此,${var-}变为:
${var-}
''
所有这些实际上就是:
因此,扩展没有改变var的值,也没有扩展,只是在shell nounset设置了选项的情况下避免了可能的错误。
nounset
此代码将在以下两种用途上均停止$var:
$var
#!/bin/bash set -u unset var echo "variable $var" [[ $var ]] && echo "var set"
但是,此代码将正确运行:
#!/bin/bash set -u unset var echo "variable ${var-}" [[ ${var-} ]] && echo "var set"