多重循环与中断循环

for 循环和while 循环 的 多重循环与中断循环



1 .多重循环(for 和while 都可以使用多重循环)

复制#!/bin/bash

for ((i=1;i<=5;i++))
do
    echo "外循环为:$i"

    for (( j=1;j<=3;j++))
    do
        echo "----内循环为: $j"
    done

done

image-20210720085333547



image-20210720085158462



2 . break跳出循环

break 用来跳出单个循环,后面可以接数字,表示跳出多少层循环,缺省则默认跳出 一 层。

2.1 break 跳出一层循环

复制#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一层循环为:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二层循环为: $j"

        for (( k=1;k<=3;k++))
        do
            echo "-----第三层循环为: $k"
            if [ $k -eq 2 ];then     #当k值等于2 时,条件成立
                break                 #break 跳出1 层循环
            fi
        done

    done

done


image-20210720091531079



image-20210720091311180



2.2 break 跳出多层

复制#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一层循环为:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二层循环为: $j"

        for (( k=1;k<=3;k++))
        do
            echo "-----第三层循环为: $k"
            if [ $k -eq 2 ];then     #当k值等于2 时,条件成立
                break  2               #break 跳出2层循环
            fi
        done

    done

done

image-20210720092130789

image-20210720092433911



3.continue 终止本次循环,不执行后续命令,但是不跳出循环

复制#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一层循环为:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二层循环为: $j"

        if [ $j -eq 2 ];then   #当 j 值等于2 时为真
            continue          #终止本次循环,不执行后续的语句
        fi
        echo "你好"

    done

done

image-20210720093533480



因为continue 是终止当前1 次 循环,不执行后续语句,而不是跳出循环,所以,如果在while 循环里使用 continue 命令时,需要注意位置,避免出现死循环



4.while 循环的死循环

4.1 这是正常的while 循环

复制#!/bin/bash

#设置变量a 的初始值为0
a=0

while [ $a -lt  3 ] #当变量a 的值小于3时,条件成立
do
    echo “您好”
    let a++      #每次循环,变量a 的值加1
done

image-20210720094329315



4.2 当continue 使用不当,使条件里的变量没有进行迭代,造成死循环

复制#!/bin/bash

#设置变量a 的初始值为0
a=0

while [ $a -lt  3 ] #当变量a 的值小于3时,条件成立
do
    echo “您好”

    continue     #continue 后面的语句不会被执行,所以,后面let a++不会生效,造成a值恒为0,使得while 的判断句一直有效,造成死循环
    let a++      #每次循环,变量a 的值加1,因为写在 continue语句后面,所以不会被执done

执行脚本后,一直 输出“您好” ,按ctrl +c 结束

image-20210720094813973

posted @   知己一语  阅读(213)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示