一、条件判断语法结构
思考:何为真(==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. 基本语法结构
㈠ if结构
F=表示false,为假
T=表示true,为真

图片.png
㈡ if...else结构

图片.png
小练习
自己输入字符串,如果输入的是hello,请打印world,否则打印“请输入hello”
1.read定义变量
-
if....else...
图片.png
图片.png
㈢ if...elif...else结构

图片.png
㈣ 层层嵌套结构

图片.png
2. 应用案例
㈠ 判断两台主机是否ping通
需求:判断==当前主机==是否和==远程主机==是否ping通
① 思路
- 使用哪个命令实现 ping -c次数
- 根据命令的==执行结果状态==来判断是否通$?
- 根据逻辑和语法结构来编写脚本(条件判断或者流程控制)
② 落地实现

图片.png
㈡ 判断一个进程是否存在
需求:判断web服务器中httpd进程是否存在
- 查看进程的相关命令 ps pgrep
- 根据命令的返回状态值来判断进程是否存在
- 根据逻辑用脚本语言实现
② 落地实现

图片.png
③ 补充命令

图片.png
㈢ 判断一个服务是否正常
需求:判断门户网站是否能够正常访问
① 思路
- 可以判断进程是否存在,用/etc/init.d/httpd status判断状态等方法
- 最好的方法是==直接去访问==一下,通过访问成功和失败的返回值来判断
- Linux环境,==wget== curl elinks -dump
② 落地实现

图片.png
小练习
判断用户是否存在
需求1:输入一个用户,用脚本判断该用户是否存在

图片.png

图片.png

图片.png

图片.png

图片.png

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

图片.png

