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 执行流程

  1. 初始化:将取值列表的第一个取值赋值给变量
  2. 执行循环体:执行do与done之间的命令序列
  3. 遍历列表:依次将列表中的后续元素赋给变量,重复执行循环体
  4. 退出循环:当列表中所有的取值耗尽,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 执行流程

  1. 条件判断:执行while后的条件测试操作,获取结果(真/假);
  2. 执行循环体:若条件为真,运行do...done之间的命令序列;若为假,直接跳至done退出循环;
  3. 循环判断:执行完循环体后,重新返回while进行条件测试,重复上述步骤;
  4. 退出循环:当条件测试结果为假时,结束while循环,执行后续命令。

3.until 循环

3.1标准语法结构

until循环,反向条件判断循环。条件为真(true)时执行循环体,为假(false)时退出循环。

逻辑上,while循环为正向条件判断,实际中可以根据逻辑"正向判断"或者“反向判断” 使用

标准语法:
until 条件测试操作
do
循环体
done
注意细节
  • 1.条件测试操作与while完全相同,支持方括号判断、test命令、布尔值
  • 2.若条件为false(假),执行循环体;若条件为true(真),退出循环
  • 3.需要在循环体中修改测试条件,避免死循环

3.2 执行流程

  1. 条件判断:执行until后的条件测试操作,获取结果(真/假);
  2. 执行循环体:若条件为假,运行do...done之间的命令序列;若为真,直接跳至done退出循环;
  3. 循环判断:执行完循环体后,重新返回until进行条件测试,重复上述步骤;
  4. 退出循环:当条件测试结果为真时,结束until循环。
Logo

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

更多推荐