ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [ ]与[[ ]]的差别

[ ]与[[ ]]的差别

原创 Linux操作系统 作者:lawzjf 时间:2007-09-28 00:00:00 0 删除 编辑

[ ]:通配符不起作用,[[ ]]会展开通配符。

[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/,如需转载,请注明出处,否则将追究法律责任。

上一篇: logrotabe命令
下一篇: 编译内核过程
请登录后发表评论 登录
全部评论

注册时间:2008-01-18

  • 博文量
    279
  • 访问量
    932909