Shell腳本中[] 和 [[]] 的區別


shell腳本中[] [[]]總是太模糊,在這里記錄一下,不斷完善

-z and -n

-z用於判斷變量為空,如果為空返回0,判斷為true,如果非空返回1,判斷為false,

-n用於判斷變量不為空,如果不為空返回0,判斷為true,如果為0返回1,判斷為false

在中括號中,判斷變量的值,加不加雙引號的問題

pid="123"

[ -z "$pid" ] 單對中括號變量必須要加雙引號

[[ -z $pid ]] 雙對括號,變量不用加雙引號

[ -n "$pid" ] 單對中括號,變量必須要加雙引號

[[ -z $pid ]] 雙對中括號,變量不用加雙引號

多個條件判斷,[] [[]] 的區別?

[[ ]] 雙對中括號內,是不能使用 -a 或者 -o的參數進行比較的,只能用&& 和 ||

[[ 5 -lt 3 || 3 -gt 6 ]] 一個條件,滿足,就成立 或者的關系

[[ 5 -lt 3 || 3 -gt 6 ]] 一個條件滿足,就成立 或者的關系

 

[[ 5 -lt 3 ]] || [[3 -gt 6 ]]

[[ 5 -lt 3 ]] || [[3 -gt 6 ]] 寫在外面也可以

 

[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]] -a 和 -o就不成立了,是因為,[[]] 雙對中括號,不能使用 -o和 -a的參數,直接報錯。

[ ] 可以使用 -a -o的參數,但是必須在 [ ] 中括號內,判斷條件,例如:

[ 5 -lt 3 -o 3 -gt 2 ] 或者條件成立

[5 -lt 3 ] -o [ 3 -gt 2] 或者條件, 這個不成立,因為必須在中括號內判斷

如果想在中括號外判斷兩個條件,必須用&& || 比較

[5 -lt 3 ] || [ 3 -gt 2]

[5 -gt 3 ] && [ 3 -gt 2] 成立

|| 和 && 不能在中括號內使用,只能在中括號外使用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM