Unix/Linux - Shell 循环:初学者指南

你好,有抱负的程序员们!今天,我们将深入探索 Unix 和 Linux 中的 Shell 循环的精彩世界。如果你以前从未编写过一行代码,也不用担心——我会一步步引导你,就像我多年来教导无数学生一样。让我们开始吧!

Unix / Linux - Shell Loops

什么是 Shell 循环?

想象你在一个聚会上,需要问候每一位客人。如果你可以不用说一个接一个的“你好”,而是说,“对每位客人重复说‘你好’”,那不是很好吗?这正是编程中循环的作用——它们允许我们重复执行一组指令多次。

在 Shell 脚本中,循环对于自动化重复任务非常有用。它们可以节省你的时间,并减少如果你手动重复命令可能会出现的错误。

Shell 循环的类型

在 Unix/Linux Shell 脚本中,我们主要使用三种类型的循环:

循环类型 描述 使用场景
for 循环 遍历一个项目列表 当你知道确切的迭代次数时
while 循环 只要条件为真就继续执行 当你不知道需要多少次迭代时
until 循环 直到条件变为真才停止执行 类似于 while,但是逻辑相反

让我们详细探索每一种。

'for' 循环

'for' 循环就像一个勤奋的邮递员,他会给街上的每座房子送一条信息。它会遍历一个列表,并对每个项目执行一个动作。

这里的基本语法是:

for 变量 in 列表
do
命令
done

让我们看一个简单的例子:

#!/bin/bash
for fruit in apple banana orange
do
echo "我喜欢 $fruit"
done

如果你运行这个脚本,你会看到:

我喜欢 apple
我喜欢 banana
我喜欢 orange

在这个例子中,我们的“邮递员”(循环)正在给“街道”(我们的水果列表)上的每个“房子”(水果)送出“我喜欢”这条信息。

'while' 循环

'while' 循环就像一个坚持不懈的推销员,只要你没有买他们的产品,他们就会一直敲你的门。只要条件为真,它就会继续执行一组命令。

这里的基本语法是:

while [ 条件 ]
do
命令
done

让我们看一个例子:

#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo "计数是:$count"
count=$((count + 1))
done

这个脚本将输出:

计数是:1
计数是:2
计数是:3
计数是:4
计数是:5

在这种情况下,我们的“推销员”(循环)会一直“敲门”(打印计数)直到计数达到5。

'until' 循环

'until' 循环就像等待公交车。你会一直等待直到公交车到来。它会继续执行命令直到条件变为真。

这里的基本语法是:

until [ 条件 ]
do
命令
done

让我们看一个例子:

#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "计数是:$count"
count=$((count + 1))
done

这个脚本将产生与我们的 while 循环例子相同的输出。区别在于逻辑:我们是在计数大于5时停止,而不是当它小于或等于5时。

循环嵌套

就像你可以有一个房间里的房间(比如一个步入式衣柜),你同样可以在一个循环内嵌套另一个循环。这称为循环嵌套。

这里是一个嵌套 for 循环的例子:

#!/bin/bash
for i in 1 2 3
do
echo "外循环:$i"
for j in a b c
do
echo "  内循环:$j"
done
done

这个脚本将输出:

外循环:1
内循环:a
内循环:b
内循环:c
外循环:2
内循环:a
内循环:b
内循环:c
外循环:3
内循环:a
内循环:b
内循环:c

你可以将其想象成一个多层的公寓楼。外循环遍历每一层,而对于每一层,内循环遍历每个公寓。

嵌套 while 循环

我们也可以嵌套 while 循环。这里是一个例子:

#!/bin/bash
i=1
while [ $i -le 3 ]
do
echo "外循环:$i"
j=1
while [ $j -le 3 ]
do
echo "  内循环:$j"
j=$((j + 1))
done
i=$((i + 1))
done

这个脚本将产生与我们的嵌套 for 循环例子相似的输出。

结论

恭喜你!你已经迈出了进入 Shell 循环世界的第一步。记住,循环就像是有帮助的机器人,可以为你重复任务。'for' 循环在你确切知道要重复多少次时非常好用。'while' 和 'until' 循环在你不确定需要重复多少次,并且需要直到某个条件满足时才停止时非常完美。

在你继续编程之旅时,你会发现循环是你编码工具箱中非常有价值的工具。它们将帮助你自动化重复任务,处理大量数据,并创建更高效、优雅的脚本。

继续练习,很快你就能像专业人士一样使用循环!记住,每个编程大师都是从你现在的地方开始的。祝编码愉快!

Credits: Image by storyset