有人知道什么是:= for?bash脚本是什么:= for?
我试过谷歌搜索,但它似乎谷歌过滤器的所有符号?
我知道下面的东西就像检查变量HOME是否是一个目录,然后某些东西不等于空字符串。
if [ "${HOME:=}" != "" ] && [ -d ${HOME} ]
有人知道什么是:= for?bash脚本是什么:= for?
我试过谷歌搜索,但它似乎谷歌过滤器的所有符号?
我知道下面的东西就像检查变量HOME是否是一个目录,然后某些东西不等于空字符串。
if [ "${HOME:=}" != "" ] && [ -d ${HOME} ]
${parameter:=word}
如果参数是设置或者为空,字的扩展被指派给 参数。然后用参数值 代替。位置 参数和特殊参数可能不会以这种方式分配给 。
基本上就会当且仅当是parameter
设置或者为空的word
值分配给parameter
。
从Bash的手册页:
默认值分配。如果 参数未设置或为空,则将单词 扩展分配给 参数。然后代入参数 的值。位置 参数和特殊参数可能不会以这种方式分配给 。
手册页是一件奇妙的事情。 man bash
会告诉你几乎你想知道的关于Bash的一切。
这里"${HOME:=}"
或多或少是一个空操作符,因为如果它被设置,它将返回$ HOME,如果没有,则返回任何值。
if [ "${HOME:=}" != "" ] && [ -d ${HOME} ]
这相同的功能:
if [ "${HOME}" != "" ] && [ -d ${HOME} ]
如果你有等号后面的东西,在if
的第一部分将永远是正确的。
if [ "${HOME:=here}" != "" ] && [ -d ${HOME} ]
无论发生什么事,你总会得到一个不等于“”的字符串。
不过,这将取决于$ HOME和$ DEFAULT是否都是空:
if [ "${HOME:=$DEFAULT}" != "" ] && [ -d ${HOME} ]
一秒:) – 2009-06-30 15:21:41
由两位打我我;) – bedwyr 2009-06-30 15:22:17