如何在shell脚本中使用BASH“for”循环
BASH(代表Bourne Again Shell)是大多数基于Linux和UNIX操作系统使用的脚本语言。
您可以在终端窗口中依次运行BASH命令,也可以将命令添加到文本文件以生成shell脚本。
编写shell脚本的好处是你可以一次又一次地运行它们。 例如,假设您需要将用户添加到系统,设置他们的权限并管理他们的起始环境。 您可以在一张纸上写下命令并在添加新用户时运行这些命令,也可以编写单个脚本并仅将参数传递到该脚本中。
脚本语言(如BASH)具有与其他语言类似的编程结构。 例如,您可以使用导入参数从键盘获取输入并将它们存储为变量。 然后,您可以根据输入参数的值,让脚本执行特定的操作 。
任何编程和脚本语言的关键部分是一次又一次运行同一段代码的能力。
有很多方法可以重复代码(也称为循环)。 在本指南中,您将看到如何编写“for”循环。
for循环一遍又一遍地重复某段代码。 它们非常有用,因此一系列命令可以继续运行,直到满足特定条件,然后停止。
在本指南中,您将看到五种在BASH脚本中使用for循环的方法。
入门之前
在开始使用for循环示例之前,您需要打开终端窗口并执行以下步骤:
- 输入mkdir脚本 ( 在此处了解有关mkdir的更多信息 )
- 输入cd脚本 ( 将目录更改为脚本 )
- 输入nano examplen.sh (其中n是您正在处理的示例)
- 输入脚本
- 按CTRL + O保存并按CTRL + X退出
- 运行bash examplen.sh(再次, n是您正在使用的示例)
如何循环列表
#!/斌/庆典
为1 2 3 4 5中的数字
做
echo $ number
DONE
退出0
BASH使用“for”循环的方式与大多数其他编程和脚本语言处理“for”循环的方式有所不同。 让我们打破脚本...
在BASH“for”循环中, do和done之间的语句对列表中的每个项目执行一次。
在上面的例子中,列表是在单词后面的所有内容(即1 2 3 4 5)。
每次循环迭代时,列表中的下一个值将插入到单词“for”后面指定的变量中。 在上面的循环中,变量被称为数字 。
echo语句用于在屏幕上显示信息。
因此,此示例将数字1到5逐个输出到屏幕:
- 1
- 2
- 3
- 4
- 五
如何在起点和终点之间循环
上述例子的麻烦是,如果你想处理一个更大的列表(比如1到500),那么首先输入所有数字将需要很长时间。
这给我们带来了第二个例子,它展示了如何指定一个开始和结束点:
#!/斌/庆典
为{1..10}中的号码
做
回声“$号码”
DONE
退出0
规则基本相同。 单词“ in”后面的值构成了要遍历的列表,列表中的每个值都放置在变量(即数字)中,并且每次循环迭代时,执行do和done之间的语句。
主要区别在于列表形成的方式。 花括号{}基本上表示一个范围,在这种情况下,范围是1到10(两个点分开范围的开始和结束)。
因此,该示例贯穿每个介于1和10之间的数字,并将该数字输出到屏幕上,如下所示:
- 1
- 2
- 3
- 4
- 五
- 6
- 7
- 8
- 9
- 10
同样的循环可以像这样写, 语法与第一个例子相同:
1 2 3 4 5 6 7 8 9 10
如何跳过一个范围内的数字
前面的例子展示了如何在开始点和结束点之间循环,所以现在我们来看看如何跳过范围内的数字。
想象一下你想在0到100之间循环,但只显示每十个数字。 以下脚本显示了如何做到这一点:
#!/斌/庆典
为{0..100..10}中的数字
做
回声“$号码”
DONE
退出0
规则基本相同。 有一个列表,一个变量,以及do和do之间要执行的一组语句。 此时的列表如下所示:{0..100..10}。
第一个数字是0,结束数字是100.第三个数字(10)是列表中将跳过的项目数。
因此,上面的例子显示了以下输出:
- 0
- 10
- 20
- 三十
- 40
- 50
- 60
- 70
- 80
- 90
- 100
更传统的寻找循环
与其他编程语言相比,BASH编写循环的方式有点奇怪。
但是,您可以使用与C编程语言类似的风格编写for循环,如下所示:
#!/斌/庆典
for((number = 1; number <100; number ++))
{
如果(($ number%5 == 0))
然后
回声“$数字可以被5整除”
科幻
}
退出0
循环通过将变量编号设置为1开始(编号= 1 )。 循环将保持迭代,而数值小于100( 数字<100 )。 在每次迭代之后, 数字的值通过加1来改变( 数字++ )。
花括号之间的所有内容都是通过循环的每次迭代执行的。
大括号之间的位检查数值,将其除以5,并将余数与0进行比较。如果余数为0,则数字可被5整除,然后显示在屏幕上。
例如:
- 5可以被5整除
- 10可以被5整除
- 15可以被5整除
如果要更改迭代的步长,可以将number ++节修改为number = number + 2 , number = number + 5或number = number + 10等。
这可以进一步减少到数字+ = 2或数字+ = 5 。
一个实例
For循环可以做更多的迭代数字列表。 您实际上可以使用其他命令的输出作为列表。
#!/斌/庆典
本例中的列表是每个在当前文件夹中扩展名为.MP3的文件,变量是一个文件 。
mpg命令将MP3文件转换为WAV。 但是,您可能需要先使用软件包管理器进行安装。