shell脚本[] [[]] -n -z 的含义解析
1、在中括號中,判斷變量的值, 加不加雙引號的問題?
-z 判斷 變量的值,是否為空; zero = 0
- 變量的值,為空,返回0,為true
- 變量的值,非空,返回1,為false
-n 判斷變量的值,是否為空 name = 名字
- 變量的值,為空,返回1,為false
- 變量的值,非空,返回0,為true
pid="123"
[ -z "$pid" ] 單對中括號變量必須要加雙引號
[[ -z $pid ]] 雙對括號,變量不用加雙引號
[ -n "$pid" ] 單對中括號,變量必須要加雙引號
[[ -z $pid ]] 雙對中括號,變量不用加雙引號
2、多個條件判斷,[] 和 [[]] 的區別?
2.1:[[ ]] 雙對中括號,是不能使用 -a 或者 -o的參數進行比較的;
&& 并且 || 或 -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]] -o [[ 3 -gt 6 ]] [[ 5 -lt 3 -o 3 -gt 6 ]]
[[ 5 -lt 3 -a 3 -gt 6 ]] [[ 5 -lt 3 -a 3 -gt 6 ]]
-a 和 -o就不成立了,是因為,[[]] 雙對中括號,不能使用 -o和 -a的參數
直接報錯:
2.2 [ ] 可以使用 -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] 成立
相對的,|| 和 && 不能在中括號內使用,只能在中括號外使用
3、當判斷某個變量的值是否滿足正則表達式的時候,必須使用[[ ]] 雙對中括號
單對中括號,直接報錯:
---------------------
來源:CSDN
原文:https://blog.csdn.net/keep_lcm/article/details/80551435
轉載于:https://www.cnblogs.com/cheyunhua/p/10724171.html
總結
以上是生活随笔為你收集整理的shell脚本[] [[]] -n -z 的含义解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骑芯供应链(T 面试)
- 下一篇: Linux之nginx入门