03_流程结构语句
一、Shell流程结构
1.1、什么是流程结构?
流程结构:是指 程序执行的顺序和控制方式,也就是程序中指令或语句执行的先后顺序。在程序设计中,流程结构决定了 程序如何运行、按什么逻辑执行任务。
1.2、流程结构的三种基本类型
程序有三大流程结构分别是:
- 顺序结构:程序语句按书写顺序依次执行,A → B → C
- 选择结构(分支结构):根据条件判断,选择执行不同的路径,if...else
- 循环结构(重复结构):条件成立时,重复执行某段代码,for 循环、while 循环

二、if条件选择
2.1、if单分支
条件成立才执行,条件不成立不管。
基本语法
if [ 条件 ]
then
命令1
命令2
...
fi
if [ 条件 ]; then
命令1
命令2
fi
# 此方案一般是条件成立后,后续操作比较简单才用,复杂一些还是建议用if单分支来完成
[ 条件 ] && 命令案例1:是否成年判断
#!/bin/bash
# 是否成年判断 年龄大于等于18
age=20
# 单分支,条件成立才会执行if里面的语句
if [ $age -ge 18 ]; then
echo '你成年了'
echo '可以出去打镙丝了'
fi命令作用:
- 把命令后的文本或变量展开结果写到标准输出;配合
>或>>时会改为写入文件,前者覆盖、后者追加。
执行结果:
- 成功后文本或变量展开结果会输出到终端;带重定向时会写入目标文件。
关键参数:
注意事项:
#!/bin/bash
#threshold=80 threshold=7
**关键参数:**
**注意事项:**
0
#!/bin/bash
host=${1:-'127.0.0.1'}
合法的关键参数:
注意事项:
3 3 0
-----------------------------------nginx------------------------------------------- #!/bin/bash
processName=$1
-----------------------------------进程名称是一个动态的------------------------------------------- #!/bin/bash
processName=$1 filename=$0
**注意事项:**
9
----------------------------------------------------------------------------------------
#!/bin/bash
注意事项:
在多个条件下,选择其中一个,只要满足一个条件,则整体条件语句不去向下继续
基本语法
案例1:判断给定的数字位于哪个范围,这个数要判断在,10以内,10-20之间,20以上
#!/bin/bash
num=222注意事项:
------
--------------------------------------------------
#!/bin/bash
\033[0;36m查看主机名[h]\033[0m \033[0;32m查看ip地址[i]\033[0m \033[0;33mcpu占用[c]\033[0m \033[0;34m磁盘使用率[d]\033[0m \033[0;35m内存情况[f]\033[0m \033[0;31m查看菜单[q]\033[0m )"
**注意事项:**
**特点**:
基本语法案例1:成绩和出勤判断
要求 成绩在60以上为及格 且 出勤在70以上为及格
#!/bin/bash
score=85 attendance=90
**注意事项:**
#!/bin/bash
is_online=$?
------------------------------------vsftpd安装和配置----------------------------------------
#!/bin/bash
ftpData='/data/ftpdata'
chroot_local_user=YES
local_root=$ftpData
is_online=$?
注意事项:
if条件判断方式
#!/bin/bash
**注意事项:**
基本语法
值1)
命令1
;;
值2)
命令2
;;
值3|值4) # 多值匹配
命令3
;;
命令4
;;
命令5
;;
命令5
;;
默认命令
;;案例1:简单星期判断
输入1到7之间的数字,返回中文星期几
#!/bin/bash
1) ;; 2) ;; 3) ;; 4) ;; 5) ;; 6|7) ;; *) ;;
**注意事项:**
#!/bin/bash
请选择操作:
1|i) 主机和ip地址
2|f) 内存使用
3|p) cpu占用
4|c) 清屏
5|m) 显示菜单
\033[1;31m0|q) 退出\033[0m
)
1|i)
;;
2|f)
;;
3|p)
;;
4|c)
;;
5|m)
;;
0|q)
;;
*)
;;注意事项:
#!/bin/bash
*.sh) ;; *.log|*.txt) ;; *) ;;
**注意事项:**
-------------------------------------------------------------------------
#!/bin/bash
service=$1
start)
;;
restart)
;;
stop)
;;
*)
;; 注意事项:
特点:
>
>
案例1:1到100求和
#!/bin/bash
start=1
end=100
result=0
#result=$result+$start
注意事项:
#!/bin/sh
--------------------------------------------------------
-----------------------------------------------------------------------------
"#!/bin/bash", "", "$1" ], }, ], }
**注意事项:**
#!/bin/bash
filepath='/tmp/d.txt'
index=1
注意事项:
#!/bin/bash
请选择操作: 1|i) 主机和ip地址 2|f) 内存使用 3|p) cpu占用 4|c) 清屏 5|m) 显示菜单 \033[1;31m0|q) 退出\033[0m )
1|i) ;; 2|f) ;; 3|p) ;; 4|c) ;; 5|m) ;; 0|q) ;; *) ;;
**注意事项:**
#!/bin/bash
注意事项:
#!/bin/bash
**注意事项:**
#!/bin/bash
url='192.168.32.122'
注意事项:
发送邮件:
提前安装配置好STMP邮件发送配置
安装mailx发送邮件工具
测试邮箱地址申请:https://mailtrap.io
**注意事项:**
您好,
系统备份任务已完成。
备份文件路径:/backup/2025-11-08
此致
系统自动通知注意事项:
#!/bin/bash
threshold=1
您好,
当前此服务器($ip_host)的cpu使用率:${work_cpu}% 请及时去处理。
此致 系统报警通知
-------------------------------------------------------------------------------
---------------------------------------------------------------------------- #!/bin/bash
threshold=80
**注意事项:**
while循环
特点:
命令
命令
>
>
**示例:遍历列表**
#!/bin/bash注意事项:
命令
>
**示例:遍历命令输出**
#!/bin/bash
注意事项:
#!/bin/bash
**注意事项:**
1
2
3
4
5
6
i=1
i=1注意事项:
#!/bin/bash
-------------------遍历次数--------------------------
--------------------求和-------------------------
--------------------条件比较--------------------------
age=21
--------------------逻辑运算符-------------------------- age=12 if((age<=10));then
**注意事项:**
#!/bin/bash注意事项:
#!/bin/bash
bakdir=/backup/etc
**注意事项:**
#!/bin/bash
注意事项:
#!/bin/bash
--------------------------------------------------------
**注意事项:**
注意事项:
#!/bin/bash
rnd=$[RANDOM%10+1]
**注意事项:**
#!/bin/bash
注意事项: