shell基础——循环(适用OpenEuler 24.03)
·
1.for循环
for循环是列表遍历型循环。核心适用于操作对象为固定列表、无规律标号的重复任务。
如:从文件读取用户列表,批量创建账户,从IP清单巡检服务器状态,遍历目录处理文件等。
1.1 标准语法结构
for循环通过in关键字指定取值列表,针对列表中每个值重复执行循环体,直到列表中的取值耗尽后退出
标准语法:
for 变量名 in 取值列表
do
#循环体,命令序列,可通过$变量名引用当前取值
命令序列
done
语法细节:
- 1.取值列表的多个元素以空格分隔,支持直接写值、读取文件、命令行输出等方式生产。
- 2.循环体必须在do ---- done之间。单行编写时,do需用分号与for语句分隔(for i in 1 2;do echo $i ; done)
- 3.变量名遵循shell命名规范。建议使用大写字母。
1.2 执行流程
- 初始化:将取值列表的第一个取值赋值给变量
- 执行循环体:执行do与done之间的命令序列
- 遍历列表:依次将列表中的后续元素赋给变量,重复执行循环体
- 退出循环:当列表中所有的取值耗尽,done,结束for循环

2.while 循环
2.1 标准语法结构
while循环通过条件测试操作控制循环执行,当条件为真(true)时执行循环体,为假(false)时退出循环
标准语法:
while 条件测试操作
do
命令操作
done
注意细节
- 1.条件测试操作支持Shell所有条件判断方式:方括号判断([ $i -le 20 ])、test命令(test $i -le 20)、布尔值(true/false)
- 2.循环体中必须包含修改测试条件的语句(如 let i++、i=$((i+1))),否则会出现死循环,需通过Ctrl+C强制终止
- 3.true作为条件时,循环将无限执行(适用于持续监控场景),需通过exit、break主动退出
2.2 执行流程
- 条件判断:执行while后的条件测试操作,获取结果(真/假);
- 执行循环体:若条件为真,运行do...done之间的命令序列;若为假,直接跳至done退出循环;
- 循环判断:执行完循环体后,重新返回while进行条件测试,重复上述步骤;
- 退出循环:当条件测试结果为假时,结束while循环,执行后续命令。

3.until 循环
3.1标准语法结构
until循环,反向条件判断循环。条件为真(true)时执行循环体,为假(false)时退出循环。
逻辑上,while循环为正向条件判断,实际中可以根据逻辑"正向判断"或者“反向判断” 使用
标准语法:
until 条件测试操作
do
循环体
done
注意细节
- 1.条件测试操作与while完全相同,支持方括号判断、test命令、布尔值
- 2.若条件为false(假),执行循环体;若条件为true(真),退出循环
- 3.需要在循环体中修改测试条件,避免死循环
3.2 执行流程
- 条件判断:执行until后的条件测试操作,获取结果(真/假);
- 执行循环体:若条件为假,运行do...done之间的命令序列;若为真,直接跳至done退出循环;
- 循环判断:执行完循环体后,重新返回until进行条件测试,重复上述步骤;
- 退出循环:当条件测试结果为真时,结束until循环。

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)