重击而循环
循环是编程语言的基本概念之一。 当您要多次运行一系列命令直到满足特定条件时,循环很方便。
在Bash等脚本语言中,循环对于自动执行重复任务非常有用。 Bash脚本中有三种基本的循环构造, for
循环 while
循环和 until
循环。
本教程涵盖了 while
在Bash中循环。 我们还将向您展示如何使用 break
和 continue
语句来改变循环流。
重击 while
循环号
的 while
循环用于执行给定命令集的次数未知,只要给定条件的值为真即可。
重击 while
循环采用以下形式:
while [CONDITION]
do
[COMMANDS]
done
的 while
语句以 while
关键字,后跟条件表达式。
在执行命令之前先评估条件。 如果条件评估为真,则执行命令。 否则,如果条件评估为假,则循环终止,程序控制将传递给随后的命令。
在下面的示例中,在每次迭代中,变量的当前值 i
打印并加一。
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
Tue循环只要 i
小于或等于2。 它将产生以下输出:
Number: 0
Number: 1
Number: 2
无限的 while
循环号
无限循环是无限重复且永不终止的循环。 如果条件始终为真,则将出现无限循环。
在以下示例中,我们使用内置命令 :
创建无限循环。 :
始终返回true。 您也可以使用 true
内置或任何其他始终返回true的语句。
while :
do
echo "Press <CTRL+C> to exit."
sleep 1
done
的 while
上面的循环将无限期运行。 您可以按以下键终止循环 CTRL+C
。
这是单行等效项:
while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
逐行读取文件
最常见的用法之一 while
循环是逐行读取文件,数据流或变量。
这是一个读取 /etc/passwd
一行一行地打印文件:
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
和 continue
声明#
的 break
和 continue
语句可用于控制while循环的执行。
break
声明编号
的 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
声明编号
的 continue
语句退出循环的当前迭代,并将程序控制传递给循环的下一个迭代。
在下面的代码中,当前迭代的项目等于 2
的 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!
结论#
的 while
只要条件为真,循环就会重复执行给定的命令集。
如果您有任何疑问或反馈,请随时发表评论。
bash循环终端