循环是编程语言的基本概念之一。当您想要多次运行一系列命令直到满足特定条件时,循环会很方便。
在 Bash 等脚本语言中,循环对于自动执行重复任务非常有用。 Bash 脚本中有三种基本的循环结构,for loop
, while
循环,并且直到循环
.
本教程涵盖了以下基础知识while
Bash 中的循环。我们还将向您展示如何使用break
and continue
语句来改变循环的流程。
Bash while
Loop #
The while
循环用于执行给定命令集未知次数,只要给定条件计算结果为 true。
狂欢while
循环采用以下形式:
while [CONDITION]
do
[COMMANDS]
done
The while
声明以while
关键字,后跟条件表达式。
在执行命令之前评估条件。如果条件评估为 true,则执行命令。否则,如果条件计算结果为 false,则循环终止,程序控制将传递给后面的命令。
在下面的示例中,在每次迭代中,变量的当前值i
被打印并且增加的
by one.
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue 循环迭代只要i
小于或等于二。它将产生以下输出:
Number: 0
Number: 1
Number: 2
无穷while
Loop #
无限循环是无限重复且永不终止的循环。如果条件始终为 true,则会出现无限循环。
在下面的示例中,我们使用内置命令:
创建无限循环。:
总是返回 true。您还可以使用true
内置语句或任何其他始终返回 true 的语句。
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
The while
上面的循环将无限期地运行。您可以通过按终止循环CTRL+C
.
这是一个等效的单行:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
逐行读取文件#
最常见的用法之一while
循环是逐行读取文件、数据流或变量。
这是一个读取以下内容的示例/etc/密码逐行文件并打印每一行:
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
而不是控制while
带条件循环,我们使用输入重定向(< "$file"
)将文件传递给read
命令,控制循环。这while
循环将运行直到读取最后一行。
逐行读取文件时,始终使用read
与-r
防止反斜杠充当转义字符的选项。
默认情况下,read
命令修剪前导/尾随空白字符(空格和制表符)。使用IFS=
之前的选项read
为了防止这种行为:
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break
and continue
声明#
The 中断和继续语句可以用来控制while循环的执行。
break
陈述#
The break
语句终止当前循环并将程序控制传递给终止循环后面的命令。它通常用于在满足某个条件时终止循环。
在下面的示例中,一旦当前迭代项等于2
.
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue
陈述#
The continue
语句退出循环的当前迭代并将程序控制传递给循环的下一次迭代。
在下面的例子中,一旦当前迭代项等于2
the continue
语句将导致执行返回到循环的开头并继续下一次迭代。
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
结论#
The while
只要条件为真,循环就会重复执行一组给定的命令。
如果您有任何问题或反馈,请随时发表评论。