### **一、For 循环**
**1. 基础语法与实例应用**
`for` 循环主要用于遍历一系列项目(如数字序列、字符串或者文件名等)。基本格式如下:
bash
for var in item_1 item_2 ... item_n
do
# commands to be executed for each iteration using $var
done
例如,要逐行读取一个文本文件的内容并打印到终端:
bash
#!/bin/bash
file="example.txt"
# 使用 'cat' 和 read 的组合通过管道配合 for 循环来按行读取文件内容
cat "$file" | while IFS= read -r line; do
echo "Line is: '$line'"
done
另一种常见的用法是对一组数值进行迭代操作:
bash
#!/bin/bash
for i in {1..5}; do # 这将从1递增至5
echo "The number is: $i"
done
**2. C-Style For Loop (增强型)**
Bash shell还支持C语言风格的 `for` 循环,其形式为初始化变量、测试表达式以及更新部分均明确指定:
bash
for (( init_expression ; condition_test ; update_expression )); do
# Commands...
done
举例来说,计算1~10之间的整数之和可以这样实现:
bash
#!/bin/bash
sum=0
for((i = 1; i <= 10; i++)); do
sum=$((sum + i))
done
echo "Sum of numbers from 1 to 10 : $sum"
### **二、While 循环**
**3. 基础语法与实例应用**
`while` 循环会在给定条件保持真的情况下持续执行一段命令集,它的基础结构看起来像下面的样子:
bash
while [condition]
do
#commands
done
比如创建一个简单的计数器,并在其值小于等于5的情况下继续输出当前值:
bash
#!/bin/bash
counter=1
while [[ $counter -le 5 ]]
do
echo "Counter value is: $counter"
counter=$((counter+1))
done
此外,还可以结合输入判断语句使用,只有当用户正确回答问题时才结束循环:
bash
#!/bin/bash
read -p "Please input yes or no: " answer
while ! [[ "$answer" =~ ^[YyNn]$ ]]; do
echo "Invalid response, please enter either 'yes' or 'no'."
read -rp "Try again: " answer
done
echo "Received valid response."
总结起来,无论是基于索引/项目的 For 循环还是依赖于布尔逻辑结果的 While 循环,都是 Bash 中不可或缺的一部分,它们极大地增强了脚本对复杂任务的自动化能力。熟练掌握这两种循环结构的应用场景及其特点,能显著提升编写高效且健壮shell脚本的能力。