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 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值