Linux Shell中的循环控制语句
在编写Shell脚本时,循环是一种常用的控制结构,用于重复执行一系列命令。在Shell中,主要有三种循环控制语句:for
循环,while
循环,和until
循环。
1. For循环
for
循环是最常见的循环控制语句。它可以遍历一个列表中的每个元素,并对每个元素执行一系列命令。
for variable in list
do
commands
done
示例:
遍历一个数字列表:
for i in 1 2 3 4 5
do
echo "Number: $i"
done
遍历一个字符串列表:
for name in Alice Bob Charlie
do
echo "Hello, $name!"
done
以上两个例子,默认以空格分隔元素
循环遍历数组:
colors=("red" "green" "blue" "yellow")
for color in "${colors[@]}"
do
echo "Color: $color"
done
输出从1到10的数字:
for ((i=0;i<10;i++))
do
echo "场景2 i is $i"
done
2. While循环
while
循环会在给定的条件为真时不断执行一系列命令。
while condition
do
commands
done
示例:
打印1到5的数字:
i=1
while [ $i -le 5 ]
do
echo "Number: $i"
i=$((i + 1))
done
循环和read命令遍历文件的每一行
filename="sample.txt"
while IFS= read -r line
do
echo "Line: $line"
done < "$filename"
3. Until循环
until
循环与while
循环相反,它会在给定的条件为假时不断执行一系列命令。
until condition
do
commands
done
示例:
打印1到5的数字:
i=1
until [ $i -gt 5 ]
do
echo "Number: $i"
i=$((i + 1))
done
循环控制命令
在循环中,有时我们需要提前结束循环或跳过当前迭代。Shell提供了两个命令来实现这些控制:break
和continue
。
break
:用于退出整个循环。continue
:用于跳过当前迭代,继续执行下一次迭代。
示例:
使用break
退出循环:
for i in {1..10}
do
if [ $i -eq 5 ]
then
break
fi
echo "Number: $i"
done
使用continue
跳过特定迭代:
for i in {1..10}
do
if [ $i -eq 5 ]
then
continue
fi
echo "Number: $i"
done