Skip to content

循环语句

在Shell编程中,循环语句用于重复执行一段代码,直到满足某个条件为止。Shell脚本支持多种循环结构,包括for循环、while循环和until循环。

for 循环

for循环用于遍历一系列的值或一组命令的输出结果。它有两种常见的语法形式:C风格的for循环和Shell特有的for循环(也称为“in”循环)。

C风格的 for 循环

这种循环的语法与C语言中的for循环相似,但它并不常用于Shell脚本中,因为Shell更擅长处理文本和文件。不过,它仍然可以用于需要计数循环的场合。

sh
for (( initialization; condition; increment )); do
    # code to execute in each iteration
done

Shell特有的 for 循环

这种循环更常用于Shell脚本中,因为它非常适合处理文本和文件列表。

sh
for variable in list; do
    # code to execute for each item in list
done

其中,list可以是由空格分隔的一系列值,也可以是命令的输出结果(通过命令替换$(...)或反引号`...`获得)。

while 循环

while循环在条件为真时重复执行一段代码。它通常用于处理不确定次数的循环,即循环次数取决于某个条件何时变为假。

sh
while [ condition ]; do
    # code to execute while condition is true
done

until 循环

until循环与while循环相反,它在条件为假时重复执行一段代码。换句话说,它会在条件变为真时停止循环。

sh
until [ condition ]; do
    # code to execute until condition is true
done

示例

以下是一些使用循环语句的示例:

使用C风格的 for 循环打印数字1到5

sh
#!/bin/bash

for (( i=1; i<=5; i++ )); do
    echo $i
done

使用Shell特有的 for 循环遍历文件列表

sh
#!/bin/bash

for file in /path/to/directory/*; do
    if [ -f "$file" ]; then
        echo "Processing $file"
        # 这里可以添加处理文件的代码
    fi
done

使用while循环读取文件内容

sh
#!/bin/bash

while IFS= read -r line; do
    echo "Read line: $line"
    # 这里可以添加处理每行内容的代码
done < /path/to/file.txt

使用until循环等待用户输入

sh
#!/bin/bash

echo "Enter 'exit' to quit:"

until [ "$input" = "exit" ]; do
    read -r input
    echo "You entered: $input"
done

echo "Goodbye!"

这些示例展示了如何在Shell脚本中使用forwhileuntil循环来重复执行代码块。根据具体需求选择合适的循环结构和条件表达式,可以编写出高效、灵活的Shell脚本。