shell编程之双重循环

277 阅读2分钟

1、双重循环概述

1.1 双重循环需要具备的前提——存在两个以上的自变量。

  • 执行机制
    • 循环必须是有规律的递增或递减,脚本从上至下执行。
    • 在没有break、exit、continue等结束语句时,循环语句会逐条执行。外层循环每执行一次,内层循环都要全部执行完毕,下一次外层循环才能再执行。
    • 可以把内层循环,看作外层循环的一个命令语句。

双重循环演示:

外层循环5次,内层循环5次。

 [root@localhost ~]# vim shuang.sh
 #!/bin/bash
 #外层循环
 for ((i=1;i<=5;i++))
 do
    echo 外部循环:$i"
 #内层循环
    for ((j=1;j<=5;j++))
    do
       echo "   内部循环:$j"
    done
 done

image.png

2、shell脚本退出循环语句

2.1 exit

  • exit的作用:

退出shell脚本。exit执行后,脚本后面所有的语句都不会执行。

  • 示例

在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行exit退出脚本。

效果:外层循环只执行1次,内存循环只执行2次。

 #!/bin/bash
 #外层循环
 for ((i=1;i<=5;i++))
 do
    echo "外部循环:$i"
 #内层循环
    for ((j=1;j<=5;j++))
    do
 #当内层循环到达第三次时,exit退出脚本
       if [ $j -eq 3 ]
       then
            exit
       fi
       echo "   外部循环:$j"
    done
 done

image.png

2.2 break

  • break的作用:
  1. 跳出单层循环,默认为break 1,后面的数字为跳出层数。例如"break 2"为跳出2层循环。
  2. 循环内break之后的语句都不会执行,但循环外的语句仍然会执行。
  • 示例

在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行break跳出内层循环。

效果:外层循环5次,内存循环2次。(内层循环每到达第3次时,就跳出内层循环,执行下一次外层循环。)

 #!/bin/bash
 #外层循环
 for ((i=1;i<=5;i++))
 do
    echo "外部循环:$i"
 #内层循环
    for ((j=1;j<=5;j++))
    do
 #当内层循环到达第三次时,break跳出内层循环
       if [ $j -eq 3 ]
       then
            break
       fi
       echo "   外部循环:$j"
    done
 done

image.png

2.3 continue

  • continue的作用:
  1. 终止某次循环的执行,本次循环continue后面的语句不会执行,但不会完全终止整个循环。就是直接跳过满足条件的循环,即满足条件的不执行。
  2. continue一般用于for循环。在while和until中要慎用,因为如果变量迭代语句放在continue之后,那么迭代不会执行,会造成死循环。

示例:

在内层循环的输出语句上方,增加 if 语句判断,当内存循环到达第三次时,执行continue跳出本次循环。

效果:外层循环5次,内存循环跳过第3次,执行第1、2、4、5次。

 #!/bin/bash
 #外层循环
 for ((i=1;i<=5;i++))
 do
    echo "外部循环:$i"
 #内层循环
    for ((j=1;j<=5;j++))
    do
 #当内层循环到达第三次时,continue跳过本次循环
       if [ $j -eq 3 ]
       then
            continue
       fi
       echo "   外部循环:$j"
    done
 done

image.png