break、continue、exit、return的区别和对比

一:说明

break、continue在条件循环语句及循环语句(for、while、if等)中用于控制程序的走向;而exit则用于种植所有语句并退出当前脚本,除此之外,exit还可以返回上一级程序或命令的执行状态值给当前shell;return类似于exit,只不过return仅用于在函数内部返回函数执行的状态值。


break n


如果省略n,则表示跳出整个循环,n表示跳出循环的层数;


continue n


如果省略n,则表示跳出本次循环,忽略本次循环的剩余代码,进入循环的下一次循环,n表示退到第n层继续循环;


exit n


退出当前shell程序,n为上一次程序执行的状态返回值。n也可以省略,在下一个shell里可以通过"$?"接收exit n的n值;


return


用于在函数里作为函数的返回值,以判断函数执行是否正确,在下一个shell里可以通过"$?"接收exit n的n值;

二、break、continue、exit功能执行流程图

这里以while循环和for循环为例来说明:

1、在循环中break功能的执行流程逻辑图如下:

2、在循环中continue功能的执行流程逻辑图:

3、在循环中exit功能的执行流程逻辑图:

三、break、continue、exit、return命令的示例:

说明:通过break命令跳出整个循环,执行循环下面的其他程序。

#!/bin/bash

#通过break命令跳出整个循环,执行循环下面的其他程序;

1 if [ $# -ne 1 ];then    #如果传参个数不为1,则打印下面的使用提示给用户;
2
3     echo $"usage:$0 {break|continue|exit|return}"    #分别传入4个命令作为参数;
4
5     exit 1    #退出脚本
6
7 fi 

#定义测试函数;

 1 test(){
 2
 3     for((i=0; i<=5; i++))
 4
 5     do
 6
 7         if [ $i -eq 3 ] ;then
 8
 9             $*;        #$*是接收函数外的参数,将来就是{break|continue|exit|return}中的一个;
10
11         fi
12
13         echo $i
14
15     done
16
17     echo "I am in func."
18
19 }
20
21
22
23 test $*    #这里的$*为函数的传参;
24
25 func_ret=$?    #接收并测试函数返回值;
26
27
28
29 if [ `echo $*|grep return|wc -l` -eq 1 ]    #如果传参有return;
30
31     then
32
33         echo "return‘s exit status:$func_ret"    #则提示return退出状态;
34
35 fi
36
37 echo "ok"        #函数外的输出提示; 

传入break命令的执行结果为:

 1 [[email protected] ~]# sh 12-1-1.sh
 2
 3 usage:12-1-1.sh {break|continue|exit|return}
 4
 5 [[email protected] ~]# sh 12-1-1.sh break
 6
 7 0
 8
 9 1
10
11 2
12
13 I am in func.
14
15 ok 

说明:i等于3及以后的循环没有被执行,但循环外的echo执行了,执行到break时跳出了if及外层的for循环语句,然后执行for循环外部done后面的的打印OK的语句。

传入continue命令的执行结果为:

 1 [[email protected] ~]# sh 12-1-1.sh continue
 2
 3 0
 4
 5 1
 6
 7 2
 8
 9 4
10
11 5
12
13 I am in func.
14
15 ok 

说明:只有i等于3这层循环没有被执行,其他循环全部执行了,循环外的echo也执行了,说明执行到continue时,终止了本次循环,而继续下一次的循环,直到循环正常结束,接着继续执行了循环外外面的所有语句。

3传入exit 119命令的执行结果为:

 1 [[email protected] ~]# sh 12-1-1.sh "exit 119"
 2
 3 0
 4
 5 1
 6
 7 2
 8
 9 [[email protected] ~]# echo $?
10
11 119 

说明:当进入循环里的if语句后遇到"exit 119"时,立刻退出程序,不但循环体3后面的数字没有输出,而for循环体done外面的echo函数和函数外的OK也没有输出,就直接退出了程序。另外,因程序退出指定了119,所以执行脚本后获取"echo $?"的返回值就返回了"exit 119"后面的119这个数字到当前的shell。

传入return 119命令的执行结果为:

 1 [[email protected] ~]# sh 12-1-1.sh "return 119"
 2
 3 0
 4
 5 1
 6
 7 2
 8
 9 return‘s exit status:119
10
11 ok
12
13 [[email protected] ~]# echo $?
14
15 0 

说明:当进入循环里的if语句后遇到return 119,就没有打印3以下的数字,说明return跳出了循环体,程序也没有执行for循环体done外的echo命令,而是直接执行了函数test外的if语句及打印OK的命令,可见return的作用是退出当前函数。同时,return将数字119作为函数的执行状态值返还给函数体外,执行脚本后打印返回值是0,因为程序的最后一行是打印OK的命令,执行时成功的。

原文地址:https://www.cnblogs.com/Mr-Ding/p/9201286.html

时间: 2024-10-02 09:17:48

break、continue、exit、return的区别和对比的相关文章

break continue exit return 的区别

讲起这几个shell内置函数,有段搞笑的故事,博主本身学习linux的时候不专心,所以脚本很烂.. 有一天在玩一款拳皇的时候,听到continue一词,让博主很惊讶.至此开启爱上脚本的道路. 上简单的测试 [[email protected] day1]# cat ss.sh #!/bin/bash for ((i=0;i<5;i++)) do if [ $i -eq 3 ] then break #continue #exit fi echo $i;sleep 1done echo "o

break continue exit return 函数对比

break,continue,exit,用于循环结构中,控制循环的走向,return用于函数中,返回由shell函数得到的退出值给调用它的脚本. 命令 说明 break n n表示跳出循环的层次,如果省略n表示跳出整个循环 continue n n表示退到第n层继续循环,如果省略n表示跳过本次循环,忽略本次循环的剩余代码,进入循环的下一次循环 exit n 退出当前shell程序,并返回n.n也是可以省略 return 返回由shell函数得到的退出值给调用它的脚本 一.关于break,cont

[转帖]Shell脚本中的break continue exit return

Shell脚本中的break continue exit return 转自:http://www.cnblogs.com/guosj/p/4571239.html break结束并退出循环 continue在循环中不执行continue下面的代码,转而进入下一轮循环 exit退出脚本,常带一个整数给系统,如 exit 0 return在函数中将数据返回或返回一个结果给调用函数的脚本 我理解为:break是立马跳出循环:continue是跳出当前条件循环,继续下一轮条件循环:exit是直接退出整

linux 循环结构中的 break continue exit return区别

1 概述 在脚本的循环中,需要用到break,continue,exit.来控制循环.利用return来获取函数的返回值.本文将对这四个命令的使用做介绍 break [N]:提前结束第N层循环,最内层为第1层 continue [N]:提前结束第N层的本轮循环,而直接进入下一轮判断:最内层为第1层 exit 命令终止脚本 2  break continue exit   对比 2.1 break 和continue 测试 假设一个循环体内,总共嵌套了3层循环,总循环体N为3,break 和con

关于Break、Continue和Return的区别

1. break 直接跳出当前的循环,从当前循环外面开始执行,忽略循环体中任何其他语句和循环条件测试.它只能跳出一层循环,如果循环是嵌套循环,那么需要按照你嵌套的层次,逐步使用break来跳出: 2. continue 也是终止当前的循环过程,但它他并不跳出循环,而是继续往下判断循环条件执行语句.它他只能结束循环中的一次过程,但不能终止循环继续进行: 3. return 可被用来使正在执行分支程序返回到调用它的方法,return表示中止当前函数的运行,并将操作权返回给调用者, 如果是在main函

break和continue、return的区别

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>break和continue.return的区别</title></head><body><script> // 在 javascript中break,continue和return 这三个关键字, 都有停止循环的功能,ret

js中退出语句break,continue和return 比较

在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一起讨论 这两个应用的范围是退出循环或者switch语句,在其他地方使用会导致错误: break:由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的. 举例: for(var i=1;i<=10;i++) { if(i==6) { break;

js中退出语句break,continue和return 比较 (转载)

在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 首先:break和continue两个一起讨论 这两个应用的范围是退出循环或者switch语句,在其他地方使用会导致错误: break:由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是合法的. 举例: for(var i=1;i<=10;i++) { if(i==6) { break;

JS中break continue和return的用法?

在 break,continue和return 三个关键字中, break,continue是一起的,return 是函数返回语句,但是返回的同时也将函数停止 break和continue: 退出循环或者switch语句,在其他地方使用会导致错误 break: 举例: for(var i=1;i<=10;i++) { if(i==6) { break; } document.write(i); } //输出结果:12345 当i=6的时候,直接退出for这个循环.这个循环将不再被执行! cont