Shell 脚本 101:Shell 脚本中的 While 循环

在之前的 shell 脚本 101s 中,我们介绍了 数组变量 在 shell 脚本中。 在本教程中,我们将介绍 shell脚本中的while循环.

shell脚本中的while循环用于多次重复指令,直到循环的条件保持为真。 循环在现实世界的应用程序中有很多用例,因为我们创建循环是为了自动执行重复性任务。 让我们回顾一些用例并学习在 shell 脚本中使用 while 循环。

Shell 脚本中 While 循环的语法

while 循环根据提供给它的条件工作。 它可以像等待一个变量等于指定的数字一样简单,也可以像等待另一个命令的输出与我们指定的输出一样复杂。 这里的可能性是无穷无尽的。 如果您可以将某事评估为 TRUE 或 FALSE,则可以将其用作 while 循环的条件。

while [condition - should evaluate to TRUE or FALSE] do     command      command done 

这就是典型的 while 循环的样子。

使用 Shell 脚本时的布尔运算符

除了您在其他编程语言中看到的布尔运算符之外,包括 ==, , =, 等等,这些是特定于 shell 脚本的运算符。 主要的用法差异是这些运算符将 仅在数值时有效 提供。 使用字符串值,操作将简单地失败。

操作员 描述 例子
-出生 检查两个操作数是否不相等 [ 1 -ne 2 ] 是真的
情商 检查两个操作数是否相等 [ 1 -eq 2 ] 是假的
lt 检查左操作数是否小于右操作数 [1-lt 2 ] 是真的
gt 检查左操作数是否大于右操作数 [1-gt 2 ] 是假的
检查左操作数是否小于或等于右操作数。 [1-le 2 ] 是真的
检查左操作数是否大于或等于右操作数。 [1-ge 2 ] 是假的

在 Shell 脚本中创建 While 循环

默认情况下,while 循环没有重复限制。 我们必须明确地为它提供一个条件,在代码执行期间的某个时刻,它会变为 false。 否则,除非发送中断信号,否则您将有一个不会结束的循环。

i=0 while [ $i -le 10 ] do     echo True     ((i++)) done echo False 

Save 上面的脚本可以使用任何名称 .sh 延期。 要运行该文件,您可以使用 bash 命令之类的 bash .sh 或使用 chmod 命令使文件可执行。 要使脚本可执行,请运行 chmod +x .sh 接着 ./.sh 将允许您运行脚本。

让我们逐行理解脚本。

  • 我=0 – 这里我们将变量 $i 设置为 0。在我们之前的教程中了解有关变量的更多信息
  • 尽管 [ $i -le 10 ] – 只运行 while 循环,直到变量 $i 小于或等于 10。所以这个循环将运行 11 次,包括第零次运行。
  • – 在 shell 脚本中标记 while 循环的开始
  • 回声真 – 一个简单的命令,将在我们的终端上打印单词“True”
  • ((i++)) – C 风格变量递增到 加 1 每个循环到变量 i 。 执行增量还有多种其他方法,包括 $i=((i+1))、((i=i+1)) 等。随意使用其中一种。
  • 完毕 – 标记 while 循环的结束
  • 回声假 – 这再次简单地在屏幕上打印出单词 False 以指示条件现在变为错误。

您将收到类似于下面屏幕截图中的输出。

Shell 脚本输出中的 While 循环

Shell 脚本中的无限 While 循环

现在我们已经知道如何添加一个条件来终止 while 循环,让我们看看如何处理无限 while 循环。 我们唯一要做的就是跳过条件部分。

i=0 while : do     echo Script ran $i times     ((i++)) done echo False 

Save 这个脚本在另一个文件中 .sh 延期。 您可以按照与上述相同的步骤执行 shell 脚本。 脚本运行后,在不到 1 秒的时间内,您应该会获得 100 次数千次的输出。

要停止脚本,请按 Ctrl + C.

Bash 无限循环

您必须向上滚动才能看到您从哪里开始,因为循环运行得非常快。

结论

这是一个足够简单的循环,目前不需要详细介绍。 随着我们继续讨论主题,我们将继续在一致的基础上使用 while 循环。 进行更详细的操作,包括读取文件、评估更多条件等。当您学习 shell 脚本 101 教程时,您将在每个教程中学习一个主题。 在转到下一个主题之前,请确保您进行了足够的练习以确保您精通并有良好的动手能力。 在本教程中,我们介绍了 shell 脚本中的 while 循环及其用法。

参考:
https://www.gnu.org/software/gawk/manual/html_node/While-Statement.html