shell [ ] 與 [[ ]] 區別
阿新 • • 發佈:2018-03-05
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 [ ] 與 [[ ]] 區別