天天看點

一篇部落格厘清shell中的狀态傳回值-return-break-continue-exit

一篇部落格厘清shell中的狀态傳回值-return-break-continue-exit

一、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功能的執行流程邏輯圖

<a href="https://s3.51cto.com/wyfs02/M00/9D/76/wKioL1mAZC7BCACTAABfUCx4vyc192.png" target="_blank"></a>

<a href="https://s5.51cto.com/wyfs02/M01/9D/76/wKiom1mAZC6iNRXEAABepFOOimA055.png" target="_blank"></a>

2、在循環中bcontinue功能的執行流程邏輯圖

<a href="https://s5.51cto.com/wyfs02/M01/9D/76/wKioL1mAZEPQQVeoAABfsEAdVjk688.png" target="_blank"></a>

3、在循環中exit功能的執行流程邏輯圖

<a href="https://s4.51cto.com/wyfs02/M00/9D/76/wKioL1mAZFLT3LpqAABptYgH8TE585.png" target="_blank"></a>

<a href="https://s4.51cto.com/wyfs02/M01/9D/76/wKiom1mAZFLRQ_DtAABqMx-WLA8644.png" target="_blank"></a>

三、用一個小腳本區分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

<code>[root@xuegod63 ~]</code><code># vim 3.sh </code>

<code>#!/bin/bash</code>

<code>#</code>

<code>#User : Mobanche</code>

<code>#Date : 2017-8-1</code>

<code>#Description :This shell script is used primarily to identify the state </code>

<code>#             return value of a loop control that is distinguished from </code>

<code>#             the return-break-continue-exit</code>

<code> </code> 

<code>if</code> <code>[ $</code><code># -ne 1 ]</code>

<code>then</code>

<code>        </code><code>echo</code> <code>"usage: {conntiue|break|exit|return}"</code>      

<code>        </code><code>exit</code> <code>1</code>

<code>fi</code>

<code>test</code> <code>() {</code>

<code>        </code><code>for</code> <code>((i=1;i&lt;=5;i++))</code>

<code>        </code><code>do</code>

<code>                </code><code>if</code> <code>[ $i -</code><code>eq</code> <code>3 ]</code>

<code>                </code><code>then</code>

<code>                        </code><code>$*</code>

<code>                </code><code>fi</code>

<code>                </code><code>echo</code> <code>$i</code>

<code>        </code><code>done</code>

<code>        </code><code>echo</code> <code>"I am function"</code>

<code>}</code>

<code>test</code> <code>$*</code>

<code>func_ret=$?</code>

<code>if</code> <code>[ `</code><code>echo</code> <code>$*|</code><code>grep</code> <code>return</code><code>|</code><code>wc</code> <code>-l` -</code><code>eq</code> <code>1 ]</code>

<code>        </code><code>echo</code> <code>"return's exit status :$func_ret"</code>

<code>echo</code> <code>OK</code>

測試:

本文轉自 于學康 51CTO部落格,原文連結:http://blog.51cto.com/blxueyuan/1952770,如需轉載請自行聯系原作者