这两个符号怎么用,点击这里
本次说说两者的不同之处?
先看两个字符串(其中一个为空值)比较时,如果不加“”双引号来表示一个整体时,用三种不同的判断方式会是什么样的结果:(正确的字符串比较方法要在两个字符串上加双引号,表示它是一个整体)
- 第一种: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进行比较了。那剩下的右半部分中括号是干啥的?打酱油的?是不是就出错了。