📅  最后修改于: 2023-12-03 15:21:09.046000             🧑  作者: Mango
在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脚本中常用的循环结构,可以用它重复执行某些命令或语句集合,也可以与管道、文件和其他命令/函数组合使用,使其更加灵活和强大。