Linux中双中括号 [[]] 的用法
2016-06-20 15:15
267 查看
(1)在Linux中双中括号[[]]比单中括号[]更加的通用。双中括号之间的内容均不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。
(2)支持字符串的模式匹配,支持shell的正则表达式,字符串比较时可以把右边当作一个模式而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[]]中匹配字符串或者通配符,不需要引号。
(3)在使用[[]]条件判断结构,而不是[],能够防止脚本中的许多逻辑错误。比如&&、||,这些操作符能够正常存在于[[]]中,但是在[]结构中却会报错,比如可以直接使用if[[ $a != 1 && $a != 2 ]],如果不使用双括号,则if[ $a -ne 1 ] && [ $a != 2 ] 或者if [ $a -ne 1 -a $a != 2 ]
(4)bash 把双括号中的表达式看作是一个单独的元素,并返回一个单独的退出状态码。
if ($a<5)
if [$a -lt 5]
if [$a -ne 1 -a $a != 2]
if [$a -ne 1 ] && [ $a !=2 ]
if [[ $a != 1 && $a != 2 ]]
for a in `seq 0 4`;do echo $a ;done
for ((i=0;i<5;i++));do echo $a;done
for a in {0...4};do echo $a;done
(2)支持字符串的模式匹配,支持shell的正则表达式,字符串比较时可以把右边当作一个模式而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[]]中匹配字符串或者通配符,不需要引号。
(3)在使用[[]]条件判断结构,而不是[],能够防止脚本中的许多逻辑错误。比如&&、||,这些操作符能够正常存在于[[]]中,但是在[]结构中却会报错,比如可以直接使用if[[ $a != 1 && $a != 2 ]],如果不使用双括号,则if[ $a -ne 1 ] && [ $a != 2 ] 或者if [ $a -ne 1 -a $a != 2 ]
(4)bash 把双括号中的表达式看作是一个单独的元素,并返回一个单独的退出状态码。
if ($a<5)
if [$a -lt 5]
if [$a -ne 1 -a $a != 2]
if [$a -ne 1 ] && [ $a !=2 ]
if [[ $a != 1 && $a != 2 ]]
for a in `seq 0 4`;do echo $a ;done
for ((i=0;i<5;i++));do echo $a;done
for a in {0...4};do echo $a;done
相关文章推荐
- if逻辑判断中 grep -q 的用法
- 【多线程】 join 的用法(子线程执行完,执行主线程)
- php中->,=>,::的作用
- mkimage的用法 (转了一个小哥抄的网上几篇文章)
- SharedPreferences 的用法
- Linux下cat命令用法
- udev详解
- Linux I/O
- Linux 查看新增删除用户和用户组
- linux tail命令的使用方法详解
- linux系统下搭建php环境之-Discuz论坛
- linux服务器修改ftp默认21端口方法
- Linux账户密码过期安全策略设置
- linux下mysql命令大全
- Linux快速配置集群ssh互信
- Linux下安装SVN客户端
- Linux 内存屏障
- centos6.7下安装drbd+heartbeat,亲测可用
- linux查看文件和目录大小(du命令)
- 文件目录权限总结