2016-05-05 27 views

回答

4

the spec

$ myvar= 
$ echo "${myvar:-default}" 
default 
$ echo "${myvar-default}" 

$ unset myvar 
$ echo "${myvar-default}" 
default 

的結腸,檢查是 「如果設置或爲空,則使用默認」。沒有冒號,它只是「如果未設置,使用默認值」。

有關段落(重點煤礦):

在參數擴展先前所示,在使用 的格式將導致在用於參數即設置或者 空測試;如果省略,則會導致對參數 的測試,即僅取消設置

順便說一句,Bash也一樣。從manual引述:

當不執行子串擴展,使用形式如下所述 (例如,:-),對於一個參數,其設置或者爲空擊試驗。 省略冒號僅導致未設置的參數 。換句話說,如果包含冒號,則運營商測試 對於參數的存在並且其值不是 null;如果省略冒號,則操作員僅測試存在。