当前位置: 首页 > 科技观察

Shell教程:编写BASH'for'循环的正确姿势

时间:2023-03-21 16:02:29 科技观察

我们将在本文中学习的内容在Bashfor循环中,do和done之间的所有语句都会针对列表或数字范围中的每个项目执行一次。对于大列表,使用in{list}在开始和结束之间循环。使用省略号遍历整个数字范围,例如{1..10}中的数字。要跳过某些数字,请将第三个数字添加到范围中。例如,使用{0..100..10}仅列出每10个数字。在编程或脚本语言中,Bash提供了几种重复代码的方法——一个称为循环的过程——其中for循环重复特定的代码部分。这允许运行一系列命令,直到满足特定条件。在本指南中,我们将向您展示如何编写Bashfor循环。如何循环列表Bash等脚本语言的编程结构与其他语言相似。例如,导入参数从键盘获取输入并将该输入存储为变量,然后根据输入参数的值执行特定操作。下面是一个名为linuxmi.sh的简单示例脚本:#!/bin/bashfornumberin12345doecho$numberdoneexit0Bash使用for循环与其他编程和脚本语言处理for循环的方式略有不同。让我们分解脚本。在BASHfor循环中,do和done之间的所有语句都会为列表中的每个项目执行一次。在此示例中,列表是单词in之后的所有内容—数字12345。每次循环迭代时,列表中的下一个值被插入到单词for之后指定的变量中。在上面的循环中,变量称为number。echo语句在屏幕上显示信息。所以这个例子取数字1到5,然后将每个数字一个一个地输出到屏幕:1到500),输入所有数字需要很长时间。相反,指定起点和终点很简单:#!/bin/bashfornumberin{1..10}doecho"$number"doneexit0规则是一样的。in后面的值构成要迭代的列表,列表中的每个值都放在一个变量(即number)中。每次循环迭代,都会执行do和done之间的语句。主要区别在于列表的形成方式。大括号表示一个范围,在本例中为1到10(两个点分隔范围的开始和结束)。因此,此示例循环遍历1到10之间的每个数字,并将该数字输出到屏幕。如下:同一个循环可以这样写,语法和第一个例子一样:fornumberin12345678910如何跳过一个范围内的数字前面的例子展示了如何在一个范围内循环起点和终点。下面介绍如何跳过某个范围内的数字。例如,要在0和100之间循环,但只显示10的倍数的数字,请使用以下脚本获取此输出:#!/bin/bashfornumberin{0..100..10}doecho"$number"doneexit0规则是相同的。在do和done之间有一个列表、一个变量和一组要执行的语句。这次列表如下所示:{0..100..10}。大括号中的第一个数字是0,结尾数字是100。第三个数字(10)是列表中将被跳过的项目数。因此,上面的示例显示以下输出:一个实际示例For循环不仅仅遍历数字列表。例如,将其他命令的输出用作列表。以下示例显示了如何将音频文件从MP3转换为WAV:#!/bin/bashforfilein./*.mp3dompg-w./wavs/"${file}".wav"$file"donelistin这个例子是当前文件夹中每个扩展名为.MP3的文件,变量是一个文件。mpg命令将MP3文件转换为WAV。但是,您可能需要先使用包管理器安装此工具。