• shell脚本语句控制命令(exit、break、continue)


    一、exit

            exit用于直接退出shell脚本程序并返回状态码(状态码可在执行命令执行后用$?查看)

            如果不在exit后添加状态码,会默认返回最后一条命令执行后的状态码

            exit 加状态码,代表退出程序并向系统指定状态码

    状态码含义
    0执行成功
    非0不同程度的错误
    2用法不当
    126不是可执行的
    127命令未找到
    1. [root@localhost1 ~]#vim test.sh
    2. #!/bin/bash
    3. for ((i=1;i<=5;i++))
    4. do
    5. echo 外循环:$i
    6. for ((j=1;j<=5;j++))
    7. do
    8. if [ $j -eq 3 ];then
    9. exit #j=3时exit,不指定状态码(指定状态码为多少,最后查看则是多少)
    10. fi
    11. echo -e '\t'内循环1:$j
    12. done
    13. done
    14. [root@localhost1 ~]#bash test.sh
    15. 外循环:1
    16. 内循环1:1
    17. 内循环1:2 #这里直接退出了脚本程序,脚本后面的命令便不会再执行
    18. [root@localhost1 ~]#echo $? #查看状态码,返回的是脚本最后一个命令执行结果(执行成功)
    19. 0

    二、break

            break用于想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。

            break用于跳出一个循环体或者完全结束一个循环,不仅可以结束其所在的循环,还可结束其外层循环。

            break默认为跳出当前一层循环,如果需要跳出多层,在break后加上n(如跳出两层,使用 break 2)

    注意

    • 只能在循环体内和switch语句体内使用break。
    • 不管是哪种循环,一旦在循环体中遇到break,将结束当前循环,开始执行此循环体以外的代码。
    • 当break出现在循环体中的switch语句体内时,起作用只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。
    1. [root@localhost1 ~]#vim test.sh
    2. for ((i=1;i<=3;i++))
    3. do
    4. echo 外循环:$i
    5. for ((j=1;j<=5;j++))
    6. do
    7. if [ $j -eq 3 ];then #当j=3时break
    8. break
    9. fi
    10. echo -e '\t'内循环1:$j
    11. done
    12. done
    13. [root@localhost1 ~]#bash test.sh
    14. 外循环:1
    15. 内循环1:1
    16. 内循环1:2 #可以看到j=3时跳出当前循环体,直接执行了外循环
    17. 外循环:2
    18. 内循环1:1
    19. 内循环1:2
    20. 外循环:3
    21. 内循环1:1
    22. 内循环1:2

    三、continue

            continue用于想在某种条件出现的时候终止本次循环但不影响此循环体之后的循环。

            continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

            continue默认为终止当前一层循环,但继续执行循环后的语句,如果需要终止多层,在continue后加上n(如跳出两层,使用 continue 2)

    注意

    • continue 在用于while循环时,需要尤其注意指定迭代的位置,否则容易出现卡死循环,一般不建议在while循环中使用break
    1. [root@localhost1 ~]#vim test.shfor ((i=1;i<=5;i++))
    2. for ((i=1;i<=3;i++))
    3. do
    4. echo 外循环:$i
    5. for ((j=1;j<=5;j++))
    6. do
    7. if [ $j -eq 3 ];then #当j等于3时continue
    8. continue
    9. fi
    10. echo -e '\t'内循环1:$j
    11. done
    12. done
    13. [root@localhost1 ~]#bash test.sh
    14. 外循环:1
    15. 内循环1:1
    16. 内循环1:2 #可以看到每次内循环j=3时终止了本次循环,但不影响当前循环体之后的循环
    17. 内循环1:4
    18. 内循环1:5
    19. 外循环:2
    20. 内循环1:1
    21. 内循环1:2
    22. 内循环1:4
    23. 内循环1:5
    24. 外循环:3
    25. 内循环1:1
    26. 内循环1:2
    27. 内循环1:4
    28. 内循环1:5
  • 相关阅读:
    YOLOv8-Cls推理详解及部署实现
    vuex 学习之路
    IPWorks 2022 核心网络组件 最新版 Crack
    机器学习(八)经验风险与结构风险
    CentOS7 安装 Nacos过程
    DevToys:开发者的多功能瑞士军刀,让编程更高效!
    谷歌浏览器jsonView插件安装与使用
    【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素
    【Web安全】CORS跨域资源共享漏洞
    Java-10接口与抽象类
  • 原文地址:https://blog.csdn.net/weixin_58544496/article/details/126586393