2009-06-30 72 views
6

有人知道什麼是:= for?bash腳本是什麼:= for?

我試過谷歌搜索,但它似乎谷歌過濾器的所有符號?

我知道下面的東西就像檢查變量HOME是否是一個目錄,然後某些東西不等於空字符串。

if [ "${HOME:=}" != "" ] && [ -d ${HOME} ] 

回答

14

Bash Reference Manual來自:

${parameter:=word}

如果參數是設置或者爲空,字的擴展被指派給 參數。然後用參數值 代替。位置 參數和特殊參數可能不會以這種方式分配給 。

基本上就會當且僅當是parameter設置或者爲空的word值分配給parameter

+0

一秒:) – 2009-06-30 15:21:41

+0

由兩位打我我;) – bedwyr 2009-06-30 15:22:17

1

從Bash的手冊頁:

默認值分配。如果 參數未設置或爲空,則將單詞 擴展分配給 參數。然後代入參數 的值。位置 參數和特殊參數可能不會以這種方式分配給 。

手冊頁是一件奇妙的事情。 man bash會告訴你幾乎你想知道的關於Bash的一切。

0

這裏"${HOME:=}"或多或少是一個空操作符,因爲如果它被設置,它將返回$ HOME,如果沒有,則返回任何值。

if [ "${HOME:=}" != "" ] && [ -d ${HOME} ] 

這相同的功能:

if [ "${HOME}" != "" ] && [ -d ${HOME} ] 

如果你有等號後面的東西,在if的第一部分將永遠是正確的。

if [ "${HOME:=here}" != "" ] && [ -d ${HOME} ] 

無論發生什麼事,你總會得到一個不等於「」的字符串。

不過,這將取決於$ HOME和$ DEFAULT是否都是空:

if [ "${HOME:=$DEFAULT}" != "" ] && [ -d ${HOME} ]