在 Bash 中实现 for 循环
本文将讨论编写 Bash for
循环的可用 Bash 脚本公式。
首先,我们将学习它的基本语法和概念。稍后,我们将在 Bash 脚本中学习它的不同类型,例如 C 风格的 for
循环表示法和 foreach
或 for-in
风格。
最后,我们将讨论分号 ;
的问题。在 bash 提示符中进行 for
循环时。
Bash for
循环
编程或脚本语言中的循环是一种迭代控制结构,用于重复执行一个语句或一组语句,直到不满足某个条件。
for
循环是一种循环结构,特别适用于某个语句或一组命令需要执行指定次数的情况。我们还可以在 bash 提示符和 Bash 脚本中使用 for
循环。
Bash 脚本提供了两种用于编写 for
循环的语法。第一个被称为 C 风格或三表达式循环,它与 for
循环的 C 语言表述几乎相同。
第二种表述是著名的 foreach
或 for-in
样式构造,也已被许多流行的编程语言(如 PHP、Python、C#、C++11、Ruby 等)采用。
Bash C 风格 for
循环语法
这种风格使用 C 语言等三个表达式来指定循环迭代的次数。
for (( initialization; condition; increment/decrement ))
do
Shell command[s]
done
示例:假设我们要编写一个脚本,可以帮助我们打印一个包含任何用户提供的数字的表格。我们可以使用以下代码来做到这一点。
#!/bin/bash
echo "Enter a Number: "
read number
for ((j=1;j<=10;j++))
do
echo "$number X $j = $((number*j))"
done
上面的代码从用户那里获取一个数字并打印它的表,最多为 10。假设用户输入 5
作为数字,程序的输出应为:
Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50
Bash Foreach
/For-in
样式语法
这种类型的 for
循环需要一个值/元素列表,并为列表中的每个元素执行一次迭代。该列表可以通过将每个项目分隔在一个空格中来提供,或者你可以指定一个范围。
for Counter in 1 2 3 4 5 .. N
do
1st statement
2nd statement
nth statement
done
示例:打印 Hello World
五次。
#!/bin/bash
for c in 1 2 4 5 6
do
echo "$c Hello World"
done
输出:
1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World
请注意缺少的 3
。由于循环仅针对列表中给定的项目数进行迭代,因此错过了此数字。因此,变量 c
首先被赋予一个值 1
,然后执行单次迭代。
之后,将 2
分配给 c
,并执行第二次迭代。稍后,列表中的下一个值(即 4
)被分配给 c
,并且该过程继续进行,直到整个列表完成。
for Item in File_0 File_1 File_N
do
Some Operations on Item
done
或者
for Item in $(Command)
do
Some Operations on Item
done
当命令与 for
循环一起使用时,Item
变量将被一个一个地分配给每个输出标记。例如,以下脚本将使用 for
循环打印当前目录中以 f
开头的所有文件或文件夹。
#!/bin/bash
for Item in $(ls f*)
do
echo "$Item"
done
在 Bash for
循环中定义范围和跳转大小
如果你知道某些开始值和结束值之间没有缺少数字。即使两个连续值之间的差异(也称为跳转大小)大于 1,你也可以使用具有以下语法的 for
循环。
for i in {Start_Value..End_Value..Jump_Size}
do
Statement(s)
done
示例:打印 10 到 20 之间的所有偶数将需要 Start_Value=10
、End_Value=20
和 Jump_Size=2
。
#!/bin/bash
for evenNumber in {10..20..2}
do
echo "$evenNumber"
done
输出:
10
12
14
16
18
20
在 Bash 提示符中制作 for
循环并解决分号 ;
的问题
这 ;
用于在单行上分隔或结束命令。还有其他分隔符,例如&
。
然而,当 ;
用于终止命令,只有在上一条命令执行完毕后才执行下一条命令,也称为同步执行。
假设你想在 bash 提示符的单行上编写一个 for
循环,而不使用 newline
作为语句终止符,那么你可以使用 Bash 参考手册 中的以下语法。
for Item [ [in [List of Items] ] ; ] do commands; done
示例:下面的代码等价于我们之前打印偶数的脚本。
#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
三表达式或 C 类型 for
循环的语法如下。
for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done
例子:
#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
相关文章
在 Bash 中运行 find -exec 命令
发布时间:2024/03/14 浏览次数:127 分类:操作系统
-
本文将演示如何使用 find 命令的 -exec 参数来使用 find 命令定位文件中的任何文本。