SHELL_编程的条件判断和流程控制

一、条件判断语法结构

思考:何为真(==true==)?何为假(==false==)?

1. ==条件判断语法格式==
  • 格式1: ==test== 条件表达式
  • 格式2: [ 条件表达式 ]
  • 格式3: [[ 条件表达式 ]] 支持正则 =~

2. 条件判断相关参数

问:你要判断什么?

答:我要判断文件类型,判断文件新旧,判断字符串是否相等,判断权限等等...

㈠ ==判断文件类型==
图片.png
举例说明:

test -e file 只要文件存在条件为真
[ -d /shell01/dir1 ] 判断目录是否存在,存在条件为真
[ ! -d /shell01/dir1 ] 判断目录是否存在,不存在条件为真
[[ -f /shell01/1.sh ]] 判断文件是否存在,并且是一个普通的文件

㈡ 判断文件权限
图片.png
㈢ 判断文件新旧

这里的新旧指的是==文件的修改时间==


图片.png
㈣ 判断整数
图片.png
㈤ 判断字符串
图片.png
㈥ 多重条件判断
图片.png
特别说明:

&& 前面的表达式==为真==,才会执行后面的代码

|| 前面的表达式==为假==,才会执行后面的代码

; ==只==用于==分割==命令或表达式

① 举例说明

数值比较


图片.png

类C风格的数值比较


图片.png

字符串比较
图片.png

图片.png
② 逻辑运算符总结
  1. 符号;和&&和||都可以用来分割命令或者表达式
  2. 分号(;)完全不考虑前面的语句是否正确执行,都会执行;号后面的内容
  3. &&符号,需要考虑&&前面的语句的正确性,前面语句正确执行才会执行&&后的内容;反之亦然
  4. ||符号,需要考虑||前面的语句的非正确性,前面语句执行错误才会执行||后内容;反之亦然
  5. 如果&&和||一起出现,从左往右依次看,按照以上原则

二、流程控制语句

1. 基本语法结构
㈠ if结构

F=表示false,为假
T=表示true,为真


图片.png
㈡ if...else结构
图片.png
小练习

自己输入字符串,如果输入的是hello,请打印world,否则打印“请输入hello”
1.read定义变量

  1. if....else...


    图片.png

    图片.png
㈢ if...elif...else结构
图片.png
㈣ 层层嵌套结构
图片.png
2. 应用案例
㈠ 判断两台主机是否ping通

需求:判断==当前主机==是否和==远程主机==是否ping通

① 思路
  1. 使用哪个命令实现 ping -c次数
  2. 根据命令的==执行结果状态==来判断是否通$?
  3. 根据逻辑和语法结构来编写脚本(条件判断或者流程控制)
② 落地实现
图片.png
㈡ 判断一个进程是否存在
需求:判断web服务器中httpd进程是否存在
  1. 查看进程的相关命令 ps pgrep
  2. 根据命令的返回状态值来判断进程是否存在
  3. 根据逻辑用脚本语言实现
② 落地实现
图片.png
③ 补充命令
图片.png
㈢ 判断一个服务是否正常

需求:判断门户网站是否能够正常访问

① 思路
  1. 可以判断进程是否存在,用/etc/init.d/httpd status判断状态等方法
  2. 最好的方法是==直接去访问==一下,通过访问成功和失败的返回值来判断
    • Linux环境,==wget== curl elinks -dump
② 落地实现
图片.png
小练习

判断用户是否存在
需求1:输入一个用户,用脚本判断该用户是否存在


图片.png

图片.png

图片.png

图片.png

图片.png

图片.png
㈢ 判断当前主机的内核版本

判断当前内核主版本是否为2,且次版本是否大于等于6;如果都满足则输出当前内核版本


图片.png

你可能感兴趣的:(SHELL_编程的条件判断和流程控制)