8.6 循环

系列 - LINUX Shell脚本
目录
本实验手册讲解了Linux Shell脚本中的循环结构,包括不定循环(while和until)和固定循环(for)。
循环结构与条件判断(if…then…fi)同为程序设计中最基础的两大核心概念。通过循环,我们可以重复执行某段代码,直到满足特定条件为止。
循环主要分为两大类:
- 不定循环:根据条件判断来决定是否继续循环。只要条件满足,就会一直执行下去。比如
while
和until
语句。 - 固定循环:预先确定运行的次数,完成指定次数后自动结束。比如
for
语句。
理解循环的关键,在于掌握循环的终止条件。对于不定循环,需要特别注意条件的设置,以免陷入死循环;而对于固定循环,则要明确知道需要重复执行的具体次数。
任务一:不定循环
一般来说,不定循环最常见的就是底下这两种状态了。
while [ condition ] # 中括号内的状态就是判断式
do # do是循环的开始!
程序段落
done #done是循环的结束
当条件成立时,就进行循环,直到条件不成立才停止
第二种:
until [ condition ]
do
程序段落
done
当条件成立时,就终止循环,否则就持续运行循环的程序段
这里设计一个简单的"倒计时/正计时"程序,直观对比 while 和 until 的区别:
#!/bin/bash
# 文件名:loop_compare.sh
echo "=== while循环和until循环的对比 ==="
# while循环倒计时
echo "1. while循环倒计时:"
num=5
while [ $num -gt 0 ] # 当num大于0时循环继续
do
echo -n "$num "
num=$((num - 1))
sleep 1
done
echo "发射!"
echo
# until循环正计时
echo "2. until循环正计时:"
num=1
until [ $num -gt 5 ] # 直到num大于5时循环结束
do
echo -n "$num "
num=$((num + 1))
sleep 1
done
echo "完成!"
echo
# 显示对比要点
echo "=== 对比要点 ==="
echo "1. while循环:条件为真时继续循环"
echo "2. until循环:条件为假时继续循环"
echo "3. while [ 条件 ] 相当于 until [ !条件 ]"
运行结果:
任务二:固定循环
while、until的循环方式必须要符合某个条件的状态,而for这种语法则是已经知道要进行几次循环的状态。语法如下所示:
for var in con1 con2 con3 ...
do
程序段
done
我们可以做个简单的练习。假设我们要表达对不同水果的喜爱,比如苹果、香蕉、橙子,如果每一行都要按"我喜欢吃苹果…“这样的句式输出,则可以如此撰写程序:
#!/bin/bash
# 示例1:最基础的字符串遍历
echo "=== 示例1:遍历水果名 ==="
for fruit in apple banana orange
do
echo "我喜欢吃 $fruit"
done
echo
# 示例2:中文字符串同样支持
echo "=== 示例2:遍历中文 ==="
for city in 北京 上海 广州 深圳
do
echo "$city 是一线城市"
done
echo
# 示例3:包含空格的字符串需要引号
echo "=== 示例3:带空格的字符串 ==="
for message in "Good morning" "Good afternoon" "Good night"
do
echo "$message"
done
作业
编写一个Shell脚本,完成以下功能:
- 使用while循环,从10倒数到1,每次数完停顿一秒,每个数字之间用空格分隔,最后输出"新年快乐!”
- 使用for循环,列出你最喜欢的3个城市,每个城市前面加上序号(1,2,3),格式如下:
1. XX市
2. XX市
3. XX市
运行截图:
提交说明
携带 hostname,提交脚本内容截图