跳到主要内容

Ubuntu 循环结构

在 Shell 编程中,循环结构是一种强大的工具,允许我们重复执行一段代码,直到满足特定条件。循环结构在处理重复任务、遍历列表或文件、以及自动化任务时非常有用。本文将详细介绍 Ubuntu Shell 脚本中的三种主要循环结构:for 循环、while 循环和 until 循环。

1. 什么是循环结构?

循环结构是一种控制流语句,它允许我们重复执行一段代码块,直到满足某个条件。在 Shell 脚本中,循环结构通常用于处理重复性任务,例如遍历文件、处理列表或执行一系列命令。

2. for 循环

for 循环是最常用的循环结构之一,它允许我们遍历一个列表或范围,并对每个元素执行相同的操作。

基本语法

bash
for 变量 in 列表
do
命令
done

示例:遍历列表

bash
for fruit in apple banana orange
do
echo "I like $fruit"
done

输出:

I like apple
I like banana
I like orange

示例:遍历数字范围

bash
for i in {1..5}
do
echo "Number: $i"
done

输出:

Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

实际应用:批量重命名文件

假设我们有一组文件 file1.txt, file2.txt, file3.txt,我们想将它们重命名为 backup1.txt, backup2.txt, backup3.txt

bash
for file in file*.txt
do
mv "$file" "backup${file#file}"
done

3. while 循环

while 循环会在条件为真时重复执行一段代码块。与 for 循环不同,while 循环通常用于条件未知或动态变化的情况。

基本语法

bash
while [ 条件 ]
do
命令
done

示例:计数器

bash
count=1
while [ $count -le 5 ]
do
echo "Count: $count"
count=$((count + 1))
done

输出:

Count: 1
Count: 2
Count: 3
Count: 4
Count: 5

实际应用:监控系统资源

我们可以使用 while 循环来监控系统的 CPU 使用率,直到它超过某个阈值。

bash
while true
do
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')
if (( $(echo "$cpu_usage > 80" | bc -l) )); then
echo "CPU usage is high: $cpu_usage%"
break
fi
sleep 5
done

4. until 循环

until 循环与 while 循环类似,但它会在条件为假时重复执行代码块。换句话说,until 循环会一直执行,直到条件变为真。

基本语法

bash
until [ 条件 ]
do
命令
done

示例:等待文件存在

bash
until [ -f /tmp/myfile.txt ]
do
echo "Waiting for file to be created..."
sleep 2
done
echo "File found!"

输出:

Waiting for file to be created...
Waiting for file to be created...
File found!

实际应用:等待服务启动

我们可以使用 until 循环来等待某个服务启动并监听端口。

bash
until nc -z localhost 8080
do
echo "Waiting for service to start..."
sleep 2
done
echo "Service is up and running!"

5. 总结

循环结构是 Shell 脚本编程中不可或缺的一部分。通过 for 循环、while 循环和 until 循环,我们可以轻松处理重复性任务、遍历列表、监控系统状态等。掌握这些循环结构将大大提高你的脚本编写效率和灵活性。

提示

提示: 在使用循环时,务必注意循环的退出条件,避免无限循环的情况。

6. 附加资源与练习

  • 练习 1: 编写一个脚本,使用 for 循环遍历当前目录下的所有 .txt 文件,并将它们的内容打印出来。
  • 练习 2: 使用 while 循环编写一个脚本,模拟一个简单的倒计时功能,从 10 数到 1。
  • 练习 3: 使用 until 循环编写一个脚本,等待用户输入一个有效的数字,然后输出该数字的平方。

通过完成这些练习,你将进一步巩固对循环结构的理解,并能够在实际项目中灵活运用它们。