有人知道什麼是:= 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