shell流程控制-if判断语句

  • shell中的五大运算

  • if语法






当我们在写程序的时候,时常对上一步执行是否成功如何判断苦恼,当我们今天学习了if就可以解决你的苦恼。if语句在我们程序中就是用来做判断的,以后大家不管学习什么语言,以后只要涉及到判断的部分,大家就可以直接拿if来使用,不同的语言之间的if只是语法不同,原理是相同的。

一、shell中的运算

1.1)数学比较运算


  1. 运算符解释
  2.  
  3. -eq 等于
  4.  
  5. -gt 大于
  6.  
  7. -lt 小于
  8.  
  9. -ge 大于或等于
  10.  
  11. -le 小于或等于
  12.  
  13. -ne 不等于

1.2)字符串比较运算


  1. 运算符解释,注意字符串一定别忘了使用引号引起来
  2. == 等于
  3. != 不等于
  4. -n 检查字符串的长度是否大于0
  5. -z 检查字符串的长度是否为0

1.3)文件比较与检查


  1. -d 检查文件是否存在且为目录
  2.  
  3. -e 检查文件是否存在
  4.  
  5. -f 检查文件是否存在且为文件
  6.  
  7. -r 检查文件是否存在且可读
  8.  
  9. -s 检查文件是否存在且不为空
  10.  
  11. -w 检查文件是否存在且可写
  12.  
  13. -x 检查文件是否存在且可执行
  14.  
  15. -O 检查文件是否存在并且被当前用户拥有
  16.  
  17. -G 检查文件是否存在并且默认组为当前用户组
  18.  
  19. file1 -nt file2 检查file1是否比file2新
  20.  
  21. file1 -ot file2 检查file1是否比file2旧

1.4)逻辑运算


  1. 逻辑与运算 &&
  2.  
  3. 逻辑或运算 ||
  4.  
  5. 逻辑非运算 !
  6.  
  7. 逻辑运算注意事项:
  8. 逻辑与 或 运算都需要两个或以上条件,逻辑非运算只能一个条件。
  9. 口诀: 逻辑与运算 真真为真 真假为假 假假为假
  10. 逻辑或运算 真真为真 真假为真 假假为假
  11. 逻辑非运算 非假为真 非真为假

1.5)赋值运算


  1. = 赋值运算符 a=10 name='baism'

二、if 语法

2.1)语法一: 单if语句

适用范围:只需要一步判断,条件返回真干什么或者条件返回假干什么。

语句格式


  1. if [ condition ] #condition 值为true or false
  2. then
  3. commands
  4. fi

该语句翻译成汉语大意如下:


  1. 假如 条件为真
  2. 那么
  3. 执行commands代码块
  4. 结束

通过一段代码来演示一下吧,判断 当前用户是不是root,如果不是那么返回”ERROR: need to be root so that!“

实验代码

执行以下看看吧

2.2)语法二: if-then-else语句

适用范围:两步判断,条件为真干什么,条件为假干什么。


  1. if [ condition ]
  2. then
  3. commands1
  4. else
  5. commands2
  6. fi

该语句翻译成汉语大意如下:


  1. 假如条件为真
  2. 那么
  3.  
  4. 执行commands1代码块
  5. 否则
  6. 执行commands2代码块
  7. 结束

通过一段代码演示一下吧,判断当前登录用户是管理员还是普通用户,如果是管理员输出”hey admin“ 如果是普通用户输出”hey guest“

实验代码

执行结果

2.3)语法三: if-then-elif语句

适用范围:多于两个以上的判断结果,也就是多于一个以上的判断条件。


  1. if [ condition 1]
  2.  
  3. then
  4.  
  5. commands1
  6. elif [ condition 2]
  7.  
  8. then
  9.  
  10. commands2
  11.  
  12. .......
  13. else
  14.  
  15. commandsX
  16. fi

该语句翻译成汉语大意如下:


  1. 假如 条件1 为真
  2.  
  3. 那么
  4.  
  5. 执行代码块1
  6. 假如 条件2 为真
  7.  
  8. 那么
  9.  
  10. 执行代码块2
  11.  
  12. 以此类推的N个条件及对应的执行代码块
  13. 否则 【以上所有条件中没有一个满足的】
  14.  
  15. 执行代码块X
  16. 结束

通过一段代码演示一下吧,通过一个脚本,判断两个整数的关系。

实验代码

执行结果

三、if 高级应用

1、条件符号使用双圆括号,可以在条件中植入数学表达式

通过代码来看下吧

注意 双小圆括号中的比较运算符 使用的是我们传统的比较运算符 >>= == <<= !=

2、使用双方括号,可以在条件中使用通配符

通过代码看下 ,为字符串提供高级功能,模式匹配 r* 匹配r开头的字符串

执行结果

 


  • 作者:合十
  • 发表时间:2021年9月4日 02:55
  • 更新时间:2024年4月29日 18:29
  • 所属分类:Shell脚本编程

Comments

该文章还未收到评论,点击下方评论框开始评论吧~