📜  while 循环 bash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:21:09.046000             🧑  作者: Mango

while 循环 bash - Shell-Bash

在Bash脚本中,while是一种常见的循环结构,可以用它来重复执行某个命令或语句集合。

while循环的语法如下:

while command
do
    # commands
done

它的执行过程是这样的:当command命令的退出状态码是0时,进入循环体,执行# commands语句;当command命令的退出状态码不是0时,跳出循环,继续执行接下来的语句。

以下是一个简单的例子,使用while循环输出1到10之间的数字:

#!/bin/bash

i=1
while [ $i -le 10 ]
do
    echo $i
    i=$((i+1))
done

在这个例子中,我们使用[ $i -le 10 ]来判断循环条件,如果$i小于等于10就进入循环体并输出$i的值。在每次循环结束之前,将$i的值递增1,以便下一次循环。

while循环也可以使用从管道或文件中读取的数据作为循环条件。例如,下面的程序从文件中读取行并输出它们,直到文件末尾:

#!/bin/bash

input="/path/to/file"
while IFS= read -r line
do
    echo "$line"
done < "$input"

在这个例子中,我们使用read -r命令从文件中读取一行,并将其存储在$line变量中。当每次执行while循环时,read读取下一行,直到文件末尾。我们将文件名传递给<符号,以便将其附加到while循环中。

while循环也可以与其他shell命令和函数结合使用,比如grep命令和函数调用,来过滤输入并进行操作。以下是一个使用while循环和awk命令将输入的数字相加的示例:

#!/bin/bash

numbers="1 2 3 4 5"
sum=0
echo "Numbers: $numbers"
while read -r number
do
    sum=$(awk "BEGIN {print $sum + $number; exit}")
done <<< "$numbers"
echo "Sum: $sum"

在这个例子中,我们首先定义了一个包含数字的字符串$numbers。然后,我们创建了一个sum变量,并使用while循环和awk命令,将数字相加并将结果存储在sum变量中。最后,我们输出$sum的值。

总之,while循环是Bash脚本中常用的循环结构,可以用它重复执行某些命令或语句集合,也可以与管道、文件和其他命令/函数组合使用,使其更加灵活和强大。