天天看点

一篇博客分清shell中的状态返回值-return-break-continue-exit

http://blxueyuan.blog.51cto.com/9673381/1952770

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

条件与循环控制及程序返回值命令知识表

命令 说明
break n 如果省略n,则表示跳出整个循环,n表示跳出循环的层数
continue n 如果省略n,则表示跳出本次循环,忽略本次循环剩余代码,进入循环的下一次循环。n表示退到第n层继续循环
exit n 表示退出当前shell程序,n为上一次程序执行的状态返回值,n也可以省略,在下一个shell里可以通过“$?”接收exit n的n值。
return n 用于在函数里作为函数的返回值,以判断函数执行是否正确,在下一个shell里可通过“$?”接收exit n的n值

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

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

一篇博客分清shell中的状态返回值-return-break-continue-exit
一篇博客分清shell中的状态返回值-return-break-continue-exit

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

一篇博客分清shell中的状态返回值-return-break-continue-exit
一篇博客分清shell中的状态返回值-return-break-continue-exit

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

一篇博客分清shell中的状态返回值-return-break-continue-exit
一篇博客分清shell中的状态返回值-return-break-continue-exit

三、用一个小脚本区分break、continue、exit、return

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

[root@xuegod63 ~]

# vim 3.sh 

#!/bin/bash

#

#User : Mobanche

#Date : 2017-8-1

#Description :This shell script is used primarily to identify the state 

#             return value of a loop control that is distinguished from 

#             the return-break-continue-exit

if

[ $

# -ne 1 ]

then

echo

"usage: {conntiue|break|exit|return}"

exit

1

fi

test

() {

for

((i=1;i<=5;i++))

do

if

[ $i -

eq

3 ]

then

$*

fi

echo

$i

done

echo

"I am function"

}

test

$*

func_ret=$?

if

[ `

echo

$*|

grep

return

|

wc

-l` -

eq

1 ]

then

echo

"return's exit status :$func_ret"

fi

echo

OK