利用[ ] 进行判断和利用 [[ ]]的区别

这两个符号怎么用,点击这里

本次说说两者的不同之处?

先看两个字符串(其中一个为空值)比较时,如果不加“”双引号来表示一个整体时,用三种不同的判断方式会是什么样的结果:(正确的字符串比较方法要在两个字符串上加双引号,表示它是一个整体

  • 第一种:test 表达式
[root@server1 ~]# a=     //给a赋空值,
[root@server1 ~]# test $a = "heloo";echo $?
-bash: test: =: unary operator expected
2
  • 第二种:[ 表达式 ]
[root@server1 ~]# [ $a != hello ];echo $?
-bash: [: !=: unary operator expected

以上两种都报错了,来看看第三种:

  • 第三种:[[ 表达式 ]]
[root@server1 ~]# [[ $a != hello ]];echo $?
0

竟然不用加双引号,也不会报错!!

为什么用第二种时,会报错呢?

因为我们把a值赋的空值,那"$a"不就是一个空白了。这时就默认拿中括号的左半部分去和hello进行比较了。那剩下的右半部分中括号是干啥的?打酱油的?是不是就出错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值