[ ]:通配符不起作用,[[ ]]会展开通配符。
[root@redhat etc]# name=law
[root@redhat etc]# echo $name
law
[root@redhat etc]# [[ $name = [Ll]aw ]]
[root@redhat etc]# echo $?
0
[root@redhat etc]# [ $name = [Ll]aw ]
[root@redhat etc]# echo $?
1
[]使用-a,-o连接多个逻辑表达式,而[[]]使用&&,||连接多个表达式
[root@redhat etc]# [ $name1 = Tom && $name2 = Jack ]
-bash: [: missing `]'
[root@redhat etc]# [[ $name1 = Tom && $name2 = Jack ]]
[root@redhat etc]# echo $?
0
[]不能使用比较运算符,如>,<
[root@redhat etc]# [[ 2 > 3 ]]
[root@redhat etc]# echo $?
1
[root@redhat etc]# [[ 2 < 3 ]]
[root@redhat etc]# echo $?
0
[root@redhat etc]# [ 2 < 3 ]
-bash: 3: No such file or directory
测试字符串相等,等号和双等号都是可以的。
[root@redhat etc]# [[ $name == [Ll]aw ]]
[root@redhat etc]# echo $?
0
[root@redhat etc]# [ $name = [Ll]aw ]
[root@redhat etc]# echo $?
1
[root@redhat etc]# [ $name == [Ll]aw ]
[root@redhat etc]# echo $?
1
(( ))专门用来测试数值表达式,括号内的变量之前不用附加$符号。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/37724/viewspace-152636/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/37724/viewspace-152636/