现在继续我们的教程,让我们在今天的主题中介绍 shell 脚本中的 for 循环。 我们已经在之前的教程中介绍了 while 循环,并使用 break 和 continue 语句根据特定条件退出 while 循环。 那我们直接进入主题吧!
Shell脚本中的while循环和for循环有什么区别?
for 循环和 while 循环之间的主要区别在于它们的定义和语法。 在使用 while 循环时,我们提供一个条件,即 while 循环继续循环直到它变为假。 我们没有指定循环的迭代次数。 另一方面,for 循环需要 2 或 3 个条件,最后一个条件通常决定迭代次数。
第一个条件是在循环开始时迭代序列的变量,并根据迭代的内容自动递增。 例如,如果它必须运行一系列数字,则变量会根据提供给它的数字自增。
如果我在上面写的所有内容对您来说都是胡言乱语,请继续阅读,一切都会很快变得清晰。
Bash for 循环的定义
有两种方法可以定义 bash for 循环。 第一个是 bash 带有两个变量的样式,第二个是带有 3 个变量的 C 样式。 这是它们的语法。
循环定义的 Bash 样式:
for VARIABLE in SEQUENCE
这 多变的 是在循环中使用的变量名,并且 顺序 可以是一系列数字、多个文件、Linux 命令等。
C风格的循环定义:
for (( variable declaration; condition; increment variable))
如何使用 for 循环?
既然你已经基本了解了 for 循环,是时候开始在我们的脚本中使用它了。 我们将从创建一个简单的 for 循环开始,该循环遍历给定的数字序列。
#!/bin/bash for i in 1 2 3 4 5 6 7 do echo "Loop number $i" done
非常简单易懂? 让我们转到另一个序列组。
Bash For 循环文件
for 循环在我们循环时不会读取文件的内容,而只是允许我们在循环时对单个文件执行操作。 让我们看一个下面的例子。
#!/bin/bash for i in *.txt do echo "Contents from the files: $i" cat $i done
出于演示目的,我创建了两个包含一些文本的文件。 看看我如何编写一次 cat 命令,然后 for 循环遍历这两个文件。
在 Shell 脚本中为循环编写 C 风格
您现在应该对迭代单个序列感到满意。 让我们继续讨论我们之前讨论过的 C 风格的循环。 如果您已经使用过 C 或 C++,这将是几乎相同的事情。 但即使你没有,也不是太难。
让我们创建一个迭代 7 次并回显数字的 for 循环。
for (( i=1; i<=7; i++ )) do echo "Loop number $i" done
让我们逐节了解循环。 我们使用双括号的原因是为了表示 bash 我们在括号内使用了 C 风格的表达式。
- 第一个表达式: 我=1 创建循环的开始。
- 第二种表达方式: 我 告诉循环应该运行直到变量小于或等于 7
- 最后一个表达式: 我++ 决定增量如何发生。 在这种情况下,它发生在 1
结论
我希望这可以帮助您了解 shell 脚本中的 for 循环是如何工作的。 对于您可能有的任何问题,请随时在下面发表评论。