1. 程式人生 > >shell [ ] 與 [[ ]] 區別

shell [ ] 與 [[ ]] 區別

shel log 分享圖片 命令 判斷 style 為我 包含 bubuko

[ ] 與[[ ]] 均可以判斷變量是否為空, [ $a ] [[ $a ]] [ ! $a ] [[ ! $a ]] 無區別

在Linux中,我們可以使用test命令判斷一個字符串是否為空,test命令為我們提供了"-z選項"與"-n選項",使用這兩個選項可以判斷字符串是否為空。

"-z選項"可以判斷指定的字符串是否為空,為空則返回真,非空則返回假,-z可以理解為zero

"-n選項"可以判斷指定的字符串是否為空,非空則返回真,為空則返回假,-n可以理解為nozero

test 中使用"-n"或者"-z"這些選項判斷變量是否為空時,必須在變量的外側加上雙引號。而 [ ] 與 tets 效果相同,而在[[ ]] 並不用在變量上加 雙引號。

技術分享圖片

使用test -n 命令判斷變量b的值是否為空時,應該返回假,因為test命令的-n選項表示指定的字符串非空時,返回真,為空時, 返回假,但是上例中,‘test -n $b‘ 這條命令的返回值卻為真(應該為假),這是明顯不正確的

技術分享圖片

在使用"[[ ]]"時,不能使用"-a"或者"-o"對多個條件進行連接。

在使用"[ ]"時,如果使用"-a"或者"-o"對多個條件進行連接,"-a"或者"-o"必須被包含在"[ ]"之內。

在使用"[ ]"時,如果使用"&&"或者"||"對多個條件進行連接,"&&"或者"||"必須在"[ ]"之外。

shell [ ] 與 [[ ]] 區別