一、知识讲解
在编程中,循环语句是让程序重复执行任务的关键结构。
在 Shell 中常用的循环结构有:for、while、until 三种。
1. for 循环
基本格式:
Shell
for 变量 in 值1 值2 值3 ...
do
命令
done
示例:
Shell
for name in Tom Jerry Jack
do
echo "Hello, $name!"
done
💡 for 会依次取出列表中的每个值赋给变量。
2. 使用序列循环
{} 或 seq 命令可以生成序列:
Shell
for i in {1..5}
do
echo "第 $i 次循环"
done
或:
Shell
for i in $(seq 1 5)
do
echo "第 $i 次循环"
done
{1..5} 是 Bash 的内建语法,而 seq 是外部命令,推荐用前者。
3. 遍历文件或目录
示例:输出 /etc 下所有 .conf 文件名
Shell
for file in /etc/*.conf
do
echo "发现配置文件: $file"
done
4. while 循环
基本格式:
Shell
while 条件
do
命令
done
示例:
Shell
i=1
while [ $i -le 5 ]
do
echo "循环次数:$i"
((i++))
done
💡 只要条件为真 (true),while 就会持续执行。
5. until 循环
until 与 while 相反:
当条件为假时执行,直到条件为真时停止。
示例:
Shell
i=1
until [ $i -gt 5 ]
do
echo "当前值:$i"
((i++))
done
6. 循环控制语句
| 命令 | 说明 |
|---|---|
| break | 跳出整个循环 |
| continue | 跳过当前循环,继续下一次 |
示例:
Shell
for i in {1..5}
do
if [ $i -eq 3 ]; then
continue
fi
echo "循环值:$i"
done
7. 综合示例:批量操作思路
在自动化场景中,循环常用于:
- 批量创建文件 / 用户
- 批量检查主机连通性
- 批量执行命令或移动文件
这些操作往往能显著提升效率,是 Shell 自动化的基础。
二、示例代码
示例 1:输出 1 到 10
Shell
#!/bin/bash
for i in {1..10}
do
echo $i
done
示例 2:批量创建文件
Shell
#!/bin/bash
for i in {1..5}
do
touch file_$i.txt
echo "创建 file_$i.txt"
done
示例 3:while 统计求和
Shell
#!/bin/bash
sum=0
i=1
while [ $i -le 100 ]
do
((sum+=i))
((i++))
done
echo "1~100 的总和为:$sum"
示例 4:批量检查主机连通性
Shell
#!/bin/bash
for ip in 192.168.1.{1..5}
do
ping -c 1 $ip &> /dev/null
if [ $? -eq 0 ]; then
echo "$ip 可达"
else
echo "$ip 不可达"
fi
done
示例 5:循环控制
Shell
#!/bin/bash
for i in {1..5}
do
if [ $i -eq 3 ]; then
echo "跳过 $i"
continue
fi
if [ $i -eq 5 ]; then
echo "遇到 5,结束循环"
break
fi
echo "当前值:$i"
done
三、课堂练习
🧩 练习 1:批量创建文件夹
创建名为 dir_1 到 dir_10 的目录,并在每个目录内创建一个空文件 readme.txt。
提示:使用 {1..10} + mkdir + touch 组合。
🧩 练习 2:循环统计文件数量
统计当前目录中 .sh 结尾的脚本文件数量,并输出总数。
提示:使用 for file in *.sh + 计数变量。
🧩 练习 3:批量检查服务是否运行
输入一个进程名(如 sshd),编写脚本循环检测该进程是否存在。
可用 pgrep 或 ps aux | grep 实现。
✅ 本节目标总结:
- 理解
for、while、until三种循环结构 - 掌握循环控制
break、continue - 能编写简单批量任务脚本(文件操作、主机检测等)