Bash 中的 For 循环详解

循环是编程语言的基本概念之一。当你想要一遍又一遍地运行一系列命令直到达到某个条件后终止退出时,循环很方便。

在诸如 Bash 之类的脚本语言中,循环对于自动执行重复性任务非常有用。在 Bash 脚本中有3个基本的循环结构,for 循环, while 循环until 循环

在本教程中,我们将介绍 Bash 中 for 循环的基础知识以及用于改变循环流的 break 和 continue 语句。

标准 Bash for 循环

for 循环遍历项列表并执行给定的命令集。

Bash for 循环采用以下形式:

for item in [LIST] do [COMMANDS] done

列表可以是由空格分隔的一系列字符串,一系列数字,命令输出,数组等。

循环遍历字符串

在下面的示例中,循环将遍历字符串列表中的每个项目,使用变量 element 代表当前项目。

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

循环将产生以下输出:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

循环遍历数字范围

您可以使用序列表达式通过定义范围的起点和终点来指定数字或字符的范围。序列表达式采用以下形式:

{START..END}

在下面的示例中,循环将遍历从 0 到 3 的所有数字。

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

从 Bash 4 开始,还可以在使用范围时指定增量。表达式采用以下形式:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

循环数组元素

您还可以使用 for 循环迭代元素数组:

在下面的示例中,我们定义一个数组 BOOKS 并迭代数组的每个元素。

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS[@]}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

C 风格的 Bash for 循环

C-style for 循环的语法采用以下形式:

for ((INITIALIZATION; TEST; STEP)) do [COMMANDS] done

INITIALIZATION 部分仅在循环开始时执行一次。然后,评估 TEST 部分。如果为假,则 for 循环终止。如果 TEST 为真,则执行 for 循环体内的命令并更新 STEP 部分。

在下面的代码中,循环通过初始化星型 i = 0 ,然后在每次迭代之前检查是否 i ≤ 10 。如果为 true ,则打印当前值 i 并将变量递增 i 1 (i++) ,否则循环终止。

for ((i = 0 ; i <= 1000 ; i++)); do echo "Counter: $i" done

循环迭代 1001 次并将产生以下输出:

Counter: 0 Counter: 1 Counter: 2 ... Counter: 998 Counter: 999 Counter: 1000

break 和 continue

break 和 continue 语句可用于控制 for 循环执行。

break 语句

break 语句终止当前循环并将程序控制传递给终止语句后面的语句。它通常用于在满足某个条件时终止循环。

在下面的示例中,一旦当前迭代项等于 ‘Lithium’ ,循环的执行将终止。

for element in Hydrogen Helium Lithium Beryllium; do if [[ "$element" == 'Lithium' ]]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

continue 语句

continue 语句退出循环的当前迭代,并将程序控制传递给循环的下一次迭代。

在下面的示例中,我们迭代一系列数字,当当前迭代项等于 ‘2’ 时, continue 语句将导致执行返回到循环的开头并继续下一次迭代。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11821.html