Unix/Linux - Shell 循环类型



本章将讨论 Unix 中的 Shell 循环。循环是一种强大的编程工具,使您可以重复执行一组命令。本章将介绍 Shell 程序员可用的以下几种循环类型:

根据实际情况选择不同的循环。例如,**while** 循环在给定条件为真时重复执行给定的命令;**until** 循环在给定条件变为真时才停止执行。

一旦您具备良好的编程实践,您将获得专业知识,从而开始根据情况使用合适的循环。这里,**while** 和 **for** 循环在大多数其他编程语言(如 **C**、**C++** 和 **PERL** 等)中都可用。

循环嵌套

所有循环都支持嵌套的概念,这意味着您可以将一个循环放在另一个相似或不同的循环内。根据您的需求,这种嵌套可以无限次进行。

这是一个 **while** 循环嵌套的示例。其他循环也可以根据编程需求以类似的方式嵌套:

嵌套 while 循环

可以在另一个 while 循环的主体中使用 while 循环。

语法

while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true

   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done

   Statement(s) to be executed if command1 is true
done

示例

这是一个简单的循环嵌套示例。让我们在您用来计数到九的循环中添加另一个倒计时循环:

#!/bin/sh

a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

这将产生以下结果。需要注意的是 **echo -n** 在这里的用法。这里的 **-n** 选项使 echo 避免打印换行符。

0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
广告