重击而循环

循环是编程语言的基本概念之一。 当您要多次运行一系列命令直到满足特定条件时,循环很方便。

在Bash等脚本语言中,循环对于自动执行重复任务非常有用。 Bash脚本中有三种基本的循环构造, for 循环 while 循环和 until 循环。

本教程涵盖了 while 在Bash中循环。 我们还将向您展示如何使用 breakcontinue 语句来改变循环流。

重击 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"

breakcontinue 声明#

breakcontinue 语句可用于控制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 语句退出循环的当前迭代,并将程序控制传递给循环的下一个迭代。

在下面的代码中,当前迭代的项目等于 2continue 语句将导致执行返回到循环的开头并继续下一次迭代。

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循环终端

Sidebar