-z 判断 变量的值,是否为空; zero = 0
变量的值,非空,返回0,为true 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]] -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的参数
例如: [ 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] 成立
相对的,|| 和 && 不能在中括号内使用,只能在中括号外使用
wenqidongdeMBP:~ wenqidong$ tel=13690090321
wenqidongdeMBP:~ wenqidong$ [[ $tel =~ [0-9]{11} ]]
wenqidongdeMBP:~ wenqidong$ echo $?
0
wenqidongdeMBP:~ wenqidong$
wenqidongdeMBP:~ wenqidong$
wenqidongdeMBP:~ wenqidong$ tel=13688888888
wenqidongdeMBP:~ wenqidong$ [ $tel =~ [0-9]{11} ]
-bash: [: =~: binary operator expected
wenqidongdeMBP:~ wenqidong$