📜  Bash 脚本 – For 循环

📅  最后修改于: 2022-05-13 01:57:29.716000             🧑  作者: Mango

Bash 脚本 – For 循环

由于 BASH 是一种命令行语言,我们获得了一些功能丰富的经验来利用编程技能在终端中执行任务。我们可以在 BASH 脚本中使用循环和条件语句,以简单的编程方式执行一些重复性和棘手的问题。在本文中,我们将重点关注 BASH 脚本中的for 循环

根据用例和它试图自动化的问题,有几种方法可以使用 for 循环。

  • 简单的 For 循环
  • 基于范围的 for 循环
  • 循环的数组迭代
  • C 风格的 for 循环
  • 无限循环

简单的 For 循环

要执行 for 循环,我们可以编写以下语法:

#!/bin/usr/env bash

for n in a b c;
do
   echo $n
done

上面的命令会一一遍历in关键字后面的指定元素。元素可以是数字、字符串或其他形式的数据。

基于范围的 for 循环

我们可以使用基于范围的 for 循环。在这种类型的循环中,我们可以在语句中的每次迭代(可选)中指定开始、停止和递增的次数。有两种方法可以做到这一点,即通过提及递增/递减值和默认递增一。语法如下所示:

#!/bin/usr/env bash

for n in {1..5}; 
do
    echo $n
done

在上面的代码中,我们使用“{}”来指定一个数字范围。在花括号内,我们指定了起点,后跟两个点和一个终点。默认情况下,它递增一。因此,我们打印从 1 到 5 的 5 个数字(包括 1 到 5)。

#!/bin/usr/env bash

for n in {1..5..2}; 
do
    echo $n
done

在这里,我们可以看到循环增加了 2 个单位,如花括号中所述。因此,这使得处理数字变得非常容易和方便。这也可以与字母字符一起使用。

注意:我们不能在花括号内使用变量,因此我们必须对值进行硬编码。要使用变量,我们将在接下来的几节中看到传统的 C 风格的 for 循环。

循环的数组迭代

我们可以在 bash 中使用具有特定语法的 for 循环方便地迭代数组。我们可以使用 BASH 中的特殊变量,即 @ 来访问数组中的所有元素。让我们看一下代码:

#!/bin/usr/env bash

s=("football" "cricket" "hockey") 
for n in ${s[@]}; 
do
    echo $n
done

我们可以使用获取数组中所有元素的 @运算符来遍历数组元素。因此,使用 for 循环,我们一一迭代它们。我们使用变量 ${variable_name[@]} ,这里的花括号扩展了变量“s”的值,这里是一个字符串数组。使用 [@]运算符,我们访问所有元素,从而在 for 循环中迭代它们。这里,“ n ”是迭代器,因此我们可以打印该值或对其进行所需的处理。

C 风格的 for 循环

如前所述,我们需要使用 for 循环中的变量来迭代一系列元素。因此,C 风格的 for 循环起着非常重要的作用。让我们看看我们如何使用它们。

#!/bin/usr/env bash

n=7
for (( i=1 ; i<=$n ; i++ )); 
do
    echo $i
done

正如我们所见,我们可以动态地使用结束条件范围的值。请记住,双括号之间的空格可能是有意的,并且是语法的一部分。 C 风格的 for 循环是具有 3 个部分的循环,即初始化迭代器、增量器/减量器和结束条件。

在上面的语法中,我们已经将循环迭代器/计数器初始化为 1,可以根据选择任意设置。第二部分是结束条件,这里我们使用了在 for 循环之前初始化的变量“n” ,因此我们使用简单的$运算符来获取变量的值。最后,我们有增量器/减量器,它将迭代器/计数器更改为可以是任何值,但在示例中,我们使用一元运算运算符(++)将值加一,相当于“i=i +1” 。因此,我们可以使用i+=2、i-、++i等语句。

无限循环

我们不经常使用它,但有时让某些事情正常工作很有用。语法非常简单,类似于 C 风格的 for 循环。

#!/bin/usr/env bash

n=4
for (( ; ; )); 
do
    if [ $n -eq 9 ];then
        break
    fi
    echo $n
    ((n=n+1))
done

正如我们所看到的,for 循环没有条件,并且这个循环永远循环,但是我们有一个条件语句来检查它不会永远持续下去。我们在 if 语句中使用了 break 语句,以便跳出循环并停止使用迭代器进行迭代。我们已经使用增量器来增加循环中的变量,否则循环是无限的。当然,我们需要一些逻辑来跳出循环,这就是为什么我们需要使用 if 条件语句。