💜 想真正擅长编程? 从一门课程开始,100% 免费

第5节:循环语句与批量操作

一、知识讲解

在编程中,循环语句是让程序重复执行任务的关键结构。 在 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
  • 能编写简单批量任务脚本(文件操作、主机检测等)