Bash 参数替换中 :- 和 := 有什么区别?
他们似乎都设置了默认值?
Quoting Bash 参考手册 https://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion:
${parameter:-word}
If parameter
未设置或为 null,则扩展word
被替换。否则,值parameter
被替换。
${parameter:=word}
If parameter
未设置或为 null,则扩展word
被分配给parameter
。的价值parameter
那么就是
取代。位置参数和特殊参数可能不
以这种方式分配给。
不同之处在于:=
不仅取代了word
, 它也是assigns它到parameter
:
var=
echo "$var" # prints nothing
echo "${var:-foo}" # prints "foo"
echo "$var" # $var is still empty, prints nothing
echo "${var:=foo}" # prints "foo", assigns "foo" to $var
echo "$var" # prints "foo"
看到这个很棒的wiki.bash-hackers.org 教程 http://wiki.bash-hackers.org/syntax/pe了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)