shell中括号的特殊用法 linux if多条件判断

一.   bash [  ] 单双括号

基本要素:

Ø  [ ] 两个符号左右都要有空格分隔

Ø  内部操作符与操作变量之间要有空格:如  [  “a”  =  “b”  ]

Ø  字符串比较中,> < 需要写成\> \< 进行转义

Ø  [ ] 中字符串或者${}变量尽量使用"" 双引号扩住,避免值未定义引用而出错的好办法

Ø  [ ] 中可以使用 –a –o 进行逻辑运算

Ø  [ ] 是bash 内置命令:[ is a shell builtin

1.测试时逻辑操作符

-a

逻辑与,操作符两边均为真,结果为真,否则为假。

-o

逻辑或,操作符两边一边为真,结果为真,否则为假。

!

逻辑否,条件为假,结果为真。

举例: [ -w result.txt-a -w score.txt ] ;echo $? // 测试两个文件是否均可写

二.   bash  [[  ]] 双方括号

基本要素:

Ø  [[ ]] 两个符号左右都要有空格分隔

Ø  内部操作符与操作变量之间要有空格:如  [[  “a” =  “b”  ]]

Ø  字符串比较中,可以直接使用 > < 无需转义

Ø  [[ ]] 中字符串或者${}变量尽量如未使用"" 双引号扩住的话,会进行模式和元字符匹配

[root@localhostkuohao]# [[ "ab"=a* ]] && echo "ok"

  ok

Ø  [[] ] 内部可以使用 &&  || 进行逻辑运算

Ø  [[ ]] 是bash  keyword:[[ is a shell keyword

[[ ]] 其他用法都和[ ] 一样

二者共同特性:

Ø  && ||-a –o 处理

Ø  [[ ]] 和 [ ] 都可以和 ! 配合使用

优先级 !  >  && > || 

逻辑运算符  < 关系运算符

逻辑运算符  : !  &&  || -a  -o

关系运算符  : <  >  \> \<  ==  = !=  – eq –ne  -gt -ge  –lt  -le

-----------------------------------------------------------------------------

n  [[  ]] 比[ ] 具备的优势

----------------------------------------------------------------------------

①[[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。在[[和]]之间所有的字符都不会发生文件名扩展或者单词分割,但是会发生参数扩展和命令替换。

②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。[[ ]] 中匹配字符串或通配符,不需要引号。

③使用[[ ... ]]条件判断结构,而不是[... ],能够防止脚本中的许多逻辑错误。比如,&&、||、<和> 操作符能够正常存在于[[ ]]条件判断结构中,但是如果出现在[ ]结构中的话,会报错。

④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。

linux if 括号用法总结相关推荐

  1. Linux下wine用法

    Linux下wine用法 下面是wine的使用方法. 一.要在Linux下运行,wine是必不可少的,所以,请将wine安装到你的系统里. 二.将你的Windows所在的分区加载到某个目录.(本文假定 ...

  2. linux md5sum 的用法(转)

    MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度 ...

  3. Linux export 命令用法

    Linux export 命令用法 Linux export 命令用于设置或显示环境变量. 在 shell 中执行程序时,shell 会提供一组环境变量.export 可新增,修改或删除环境变量,供后 ...

  4. Linux epoll的用法

    Linux epoll的用法 epollfd_create函数 #include <sys/epoll.h>int epoll_create (int __size) 参数 含义 __si ...

  5. Linux中find用法整理

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

  6. Linux cat 命令用法

    cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从键盘创建一个文件. $ cat > filename 只能创建新文件,不能编辑已有文件. 3.将几个文件合并为 ...

  7. c语言strTrimed函数用法介绍,linux type命令用法_转

    在脚本中type可用于检查命令或函数是否存在,存在返回0,表示成功:不存在返回正值,表示不成功. $ type foo >/dev/null 2>&1 || { echo > ...

  8. Shell最全大括号{}、中括号[]、小括号()用法实例

    1.大括号{ }用法实例 1)纯{ }用法 拓展功能:例如:ls {name1,name2}.sh :touch {1..3}.sh 代码组织功能:例如:多条命令在当前shell中执行 { cmd1; ...

  9. linux signal用法,Linux 信号 signal 用法详解及注意事项

    Linux 信号 signal 用法详解及注意事项 1) SIGHUP 本信号在用户终端连接 (正常或非正常) 结束时发出, 通常是在终端的控 制进程结束时, 通知同一 session 内的各个作业, ...

  10. linux下rdesktop用法

    我自己用的参数rdesktop -g workarea -D -r clipboard:PRIMARYCLIPBOARD -a 16 -x lan 192.168.1.2 rdesktop是Linux ...

最新文章

  1. iPhone开发之网络编程 AsyncSocket
  2. mysql中日期相减_如何使用MySQL数据库
  3. 欧几里得算法和扩展欧几里得算法(Euclidean_Algorithm and Extended_Euclidean_Algorithm)
  4. RocketMQ的Consumer详解之重复消息的解决方案
  5. 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
  6. mysql 锁 代码_MySQL中的锁实例
  7. 鼠标linux驱动安装失败,win7插入鼠标提示未能成功安装设备驱动程序怎么办
  8. pythonfor循环例句_Python for 循环语句
  9. VScode 知识点查阅
  10. linux安装qq权限不够,[操作系统]Linuxqq安装及其所引发的问题{权限位是 777 (必须 =0755 且 =0755)}...
  11. 被远程之后,键盘失灵问题
  12. 平时收集的一些有关UED的团队和个人博客
  13. DEV编写C语言方法简介
  14. 基于混合高斯分布的EM算法提取声音特征并识别男女性别
  15. 计算机设计大赛赛事总结怎么写,北京科技大学计算机与通信工程学院-2018年计算机设计大赛总结会暨姚琳副教授学术报告...
  16. 手机游戏服务器都是什么协议,手机网游的服务器架构
  17. 初步完成了一个处理PEN3电子鼻气味传感数据的Matlab-GUI程序
  18. 将时谐电磁场引入工程电磁场的意义_工程电磁场答案第八版
  19. spring aop(面向切面编程)
  20. java的包装类不可变_为什么像java中的布尔类包装类是不可变的?

热门文章

  1. Windows开机启动项/自启动项文件夹位置
  2. 截取字符串中某一段数据
  3. android第三方好用,有哪些好用的安卓ROM值得推荐?安卓端最好的第三方ROM介绍...
  4. 小觅深度相机标准版 ROS使用
  5. 服务器是用集成网卡好还是独立网卡好
  6. 思维导图之----javascript正则表达式知识树
  7. 区块链基础知识的归纳与总结
  8. 知识图谱(Knowledge Graph, KG)(王昊奋老师-课程学习笔记)
  9. 计算机外设原理,计算机外设原理是什么
  10. The English (Porter2) stemming algorithm