Skip to main content

Linux Shell脚本BASH'for'循环的示例

11 5 4 Shell编程 流程控制 while循环与until循环 (可能 2025)

11 5 4 Shell编程 流程控制 while循环与until循环 (可能 2025)
Anonim

BASH(代表Bourne Again Shell)是大多数基于Linux和UNIX的操作系统使用的脚本语言。

您可以在终端窗口中依次运行BASH命令,也可以将命令添加到文本文件以生成shell脚本。

编写shell脚本的好处是你可以反复运行它们。例如,假设您需要将用户添加到系统,设置其权限并管理其起始环境。您可以在一张纸上写下命令并在添加新用户时运行它们,或者您可以编写单个脚本并将参数传递到该脚本中。

诸如BASH之类的脚本语言具有与其他语言类似的编程结构。例如,您可以使用导入参数从键盘获取输入并将其存储为变量。然后,您可以根据输入参数的值获取脚本以执行特定操作。

任何编程和脚本语言的关键部分是能够一次又一次地运行相同的代码。

有许多方法可以重复代码(也称为循环)。在本指南中,您将看到如何编写“for”循环。

一个 对于 循环重复重复代码的某一部分。它们非常有用,因此一系列命令可以继续运行,直到满足特定条件,之后它们就会停止。

在本指南中,您将看到在BASH脚本中使用for循环的五种方法。

入门之前

在开始使用for循环示例之前,您需要打开终端窗口并按照以下步骤操作:

  1. 输入 mkdir脚本 (在这里了解更多关于mkdir的信息)。

  2. 输入 cd脚本 (这会将目录更改为 脚本 ).

  3. 输入 纳米examplen.sh (哪里 ñ 是你正在努力的例子)。

  4. 输入脚本。

  5. CTRL + O 保存和 CTRL + X 退出。

  6. bash examplen.sh (再次,与 ñ 是你正在使用的榜样)。

如何循环列表

#!/ bin / bashfor number in 1 2 3 4 5doecho $ numberdoneexit 0

使用“for”循环的BASH方式与大多数其他编程和脚本语言处理“for”循环的方式有些不同。让我们打破脚本吧。

在BASH“for”循环中,所有语句之间的语句 做 和 DONE 对列表中的每个项目执行一次。

在上面的例子中,列表是单词之后的所有内容 在 (即1 2 3 4 5)。

每次循环迭代时,列表中的下一个值都会插入到单词后面指定的变量中 “对于” 。在上面的循环中,调用变量 数 .

echo语句用于向屏幕显示信息。

因此,此示例采用数字1到5并将它们逐个输出到屏幕:

  • 1
  • 2
  • 3
  • 4
  • 5

如何在起点和终点之间循环

上面例子的问题在于,如果你想处理一个更大的列表(例如1到500),首先输入所有数字需要很长时间。

这将我们带到第二个示例,其中显示了如何指定起点和终点:

#!/ bin / bashfor {1..10}中的数字doecho“$ number”doneexit 0

规则基本相同。单词“之后的值” 在” 组成列表进行迭代,列表中的每个值都放在变量(即数字)中,每次循环迭代时,之间的语句 做 和 DONE 执行。

主要区别在于列表的形成方式。花括号{}基本上表示范围,在这种情况下,范围是1到10(两个点分隔范围的开始和结束)。

因此,此示例运行介于1和10之间的每个数字,并将数字输出到屏幕,如下所示:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

可以像这样编写相同的循环,语法与第一个示例相同:

数量在1 2 3 4 5 6 7 8 9 10

如何跳过范围中的数字

前面的例子展示了如何在起点和终点之间循环,所以现在我们将看看如何跳过范围内的数字。

想象一下,你想要在0到100之间循环,但只显示每十个数字。以下脚本显示了如何执行此操作:

#!/ bin / bashfor号码在{0..100..10} doecho“$ number”doneexit 0

规则基本相同。有一个列表,一个变量和一组要在其间执行的语句 做 和 DONE 。这次列表如下所示:{0..100..10}。

第一个数字是0,结束数字是100.第三个数字(10)是它将跳过的列表中的项目数。

因此,上面的示例显示以下输出:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

更传统的寻找循环

与其他编程语言相比,BASH编写for循环的方式有点奇怪。

但是,您可以使用与C编程语言类似的样式编写for循环,如下所示:

#!/ bin / bashfor((number = 1; number <100; number ++)){if(($ number%5 == 0))thecho“$ number可被5整除”fi} exit 0

循环首先将变量数设置为1 (数字= 1 )。循环将继续迭代,而数字的值小于100 ( 数字<100 )。的价值 数 通过在每次迭代后向其添加1来进行更改( 数量++ ).

花括号之间的所有内容都是通过循环的每次迭代来执行的。

大括号之间的位检查a的值 数 ,将其除以5,并将余数与0进行比较。如果余数为0,则数字可被5整除,然后显示在屏幕上。

例如:

  • 5可以被5整除
  • 10可以被5整除
  • 15可以被5整除

如果要更改迭代的步长,可以修改数字++部分 数=数+ 2 , 数=数+ 5 , 要么 数=编号+ 10 等等

这可以进一步减少到 号+ = 2 要么 号+ = 5 .

一个实际的例子

for循环不仅可以迭代数字列表。您实际上可以使用其他命令的输出作为列表。

以下示例显示如何将音频文件从MP3转换为WAV:

#!/斌/庆典用于./*.mp3dompg -w ./wavs/"${file}".wav“$ file”中的文件

此示例中的列表是当前文件夹中扩展名为.MP3的每个文件,变量为a 文件 .

该 MPG 命令将MP3文件转换为WAV。但是,您可能需要先使用包管理器安装它。