如何在 Linux 中使用 Bash For 循环示例
在编程语言中,循环是必不可少的组件,当您想要一遍又一遍地重复代码直到满足指定的条件时使用循环。
在Bash脚本中,循环起着相同的作用,用于自动执行重复性任务,就像在编程语言中一样。
在Bash脚本中,有 3 种类型的循环:for 循环、while 循环和Until 循环。这三种循环用于遍历值列表并执行给定的一组命令。
在本指南中,我们将重点介绍Linux 中的Bash For 循环。
Bash For 循环语法
如前所述,for 循环遍历一系列值并执行一组 Linux 命令。
For 循环采用以下语法:
for variable_name in value1 value2 value3 .. n do command1 command2 commandn done
现在让我们检查一下 bash for 循环的几个示例用法。
Bash For 循环示例
最简单的for 循环形式采用以下基本格式。在此示例中,变量n
迭代一组用花括号括起来的数值,并将其值打印到 stdout。
for n in {1 2 3 4 5 6 7}; do echo $n done
Bash 带范围的 For 循环
在前面的例子中,我们明确列出了要通过for 循环迭代的值,这很好用。但是,您可以想象,如果您要迭代一百个值,那么这项任务将是多么繁琐和耗时。这将迫使您输入从 1 到 100 的所有值。
要解决此问题,请指定一个范围。为此,请指定要开始和停止的数字,并用两个句点分隔。
在这个例子中,1 是第一个值,而 7 是范围中的最后一个值。
#!/bin/bash for n in {1..7}; do echo $n done
一旦执行了 shell 脚本,就会列出范围内的所有值,类似于我们在简单循环中所看到的。
此外,我们可以在范围的末尾包含一个值,这将导致for 循环以增量步骤迭代这些值。
以下 bash 脚本打印 1 到 7 之间的值,从第一个值开始,值之间以 2 个增量为步长。
#!/bin/bash for n in {1..7..2}; do echo $n done
从上面的例子中,您可以看到循环将花括号内的值增加了 2 个值。
Bash 数组循环
您还可以使用for 循环轻松地迭代数组中定义的值。在下面的示例中,for 循环迭代水果数组内的所有值并将它们打印到 stdout。
#!/bin/bash fruits=("blueberry" "peach" "mango" "pineapple" "papaya") for n in ${fruits[@]}; do echo $n done
该@
运算符访问或定位所有元素。这样就可以逐个迭代所有元素。
此外,您可以通过指定数组中的位置来访问单个元素。
例如,为了访问“ mango ”元素,将@
运算符替换为数组中元素的位置(第一个元素从 0 开始,因此在这种情况下,“ mango ”将用 2 表示)。
for 循环如下所示。
#!/bin/bash fruits=("blueberry" "peach" "mango" "pineapple" "papaya") for n in ${fruits[2]}; do echo $n done
Bash C 风格 For 循环
您可以在循环中使用变量来迭代一系列元素。这就是C 风格的 for 循环的用武之地。以下示例说明了C 风格的 for 循环,它打印出从 1 到 7 的数值列表。
#!/bin/bash n=7 for (( n=1 ; n<=$n ; n++ )); do echo $n done
带有条件语句的 Bash C 风格 For 循环
您可以在C 风格的 for 循环中包含条件语句。在下面的示例中,我们包含了一个 if-else 语句,用于检查并打印出 1 到 7 之间的偶数和奇数。
#!/bin/bash for (( n=1; n<=7; n++ )) do # Check if the number is even or not if (( $n%2==0 )) then echo "$n is even" else echo "$n is odd" fi done
在 Bash For 循环中使用“Continue”语句
“ continue ”语句是控制脚本运行方式的内置命令。除了 Bash 脚本之外,它还用于Python和 Java 等编程语言。
当满足特定条件时, continue 语句会暂停循环内的当前迭代,然后恢复迭代。
考虑下面显示的for 循环。
#!/bin/bash for n in {1..10} do if [[ $n -eq '6' ]] then echo "Target $n has been reached" continue fi echo $n done
代码的作用如下:
- 第 2 行:标记 for 循环的开始,并将变量 n 从 1 迭代到 10。
- 第 4 行:检查 n 的值,如果变量等于 6,则脚本向 stdout 回显一条消息,并在第 2 行的下一次迭代中重新启动循环。
- 第 9 行:仅当第 4 行的条件为假时才将值打印到屏幕上。
以下是运行脚本后的预期输出。
在 Bash For 循环中使用“break”语句
正如其名称所示, ‘break’语句在满足条件时暂停或结束迭代。
考虑下面的For 循环。
#!/bin/bash for n in {1..10} do if [[ $n -eq '6' ]] then echo "Target $n has been reached" break fi echo $n done echo "All done"
代码的作用如下:
- 第 2 行:标记 for 循环的开始,并将变量 n 从 1 迭代到 10。
- 第 4 行:检查 n 的值,如果变量等于 6,则脚本向标准输出回显一条消息并停止迭代。
- 第 9 行:仅当第 4 行的条件为假时才将数字打印到屏幕上。
从输出中可以看到,一旦变量满足循环条件,循环就会停止。
结论
这是关于Bash For 循环的教程。我们希望您觉得这篇文章很有见地。欢迎随时提供反馈。