在编程语言中,循环(Loops)是必不可少的组件,当你想要一遍又一遍地重复代码直到满足指定条件时使用。在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
遍历一组用花括号括起来的数值,并将它们的值打印到标准输出。
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循环轻松地遍历数组中定义的值。在以下示例中,for循环遍历fruits数组中的所有值并将它们打印到标准输出。
#!/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
C语音风格Bash循环
你可以在循环内使用变量来迭代一系列元素。这就是C语言风格Loop的用武之地。以下示例说明了这一点,它打印出从1到 7的数值列表。
#!/bin/bash n=7 for (( n=1 ; n<=$n ; n++ )); do echo $n done
C语言风格带有条件语句的Bash循环
你可以在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 Loop中使用“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,则脚本向标准输出回显一条消息并在第2行的下一次迭代中重新启动循环。
- 第9行:仅当第4行的条件为假时才将值打印到屏幕。
以下是运行脚本后的预期输出。
在Bash For Loop中使用’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行的条件为假时才将数字打印到屏幕上。
从输出中可以看出,一旦变量满足循环条件,循环就会停止。
结论
以上就是关于Linux系统中Bash For loops的一些基础知识内容,仅供参考,希望能够对大家有所帮助。众所周知,Bash中的for
循环在脚本编程中非常有用,它的作用包括以下几个方面:
- 遍历列表:可以用来遍历一个预定义的列表,对列表中的每个元素执行相同的操作。这对于需要对一组文件、目录或其他项目进行处理时非常有用。
- 遍历范围:还可以用来遍历指定的数字范围。你可以设置一个初始值、一个终止条件和一个递增/递减步长,循环将依次执行指定范围内的操作。这对于需要进行一定次数的重复操作或迭代是非常有用的。
- 执行批量操作:能够在每次迭代中执行一系列操作,例如处理文件、调用命令、执行计算等。你可以根据需要在循环体中编写脚本代码,对每个项或每次迭代执行特定的任务。
- 自动化任务:使得自动化任务变得更加简单。你可以使用循环来处理多个文件、目录或其他项目,执行相同的任务,并自动化处理大量重复性工作。
总之,Bash中的for
循环提供了一种方便的方式来遍历列表或范围,并执行一系列操作。它是编写脚本和自动化任务的强大工具,能够简化代码编写和处理重复性任务的过程。