日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Shellbreak和continue跳出循環(huán)詳解
使用 while、until、for、select 循環(huán)時,如果想提前結束循環(huán)(在不滿足結束條件的情況下結束循環(huán)),可以使用 break 或者 continue 關鍵字。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供奉化企業(yè)網(wǎng)站建設,專注與網(wǎng)站制作、成都網(wǎng)站建設、H5建站、小程序制作等業(yè)務。10年已為奉化眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。

在C語言、C++、C#、Python、Java 等大部分編程語言中,break 和 continue 只能跳出當前層次的循環(huán),內(nèi)層循環(huán)中的 break 和 continue 對外層循環(huán)不起作用;但是 Shell 中的 break 和 continue 卻能夠跳出多層循環(huán),也就是說,內(nèi)層循環(huán)中的 break 和 continue 能夠跳出外層循環(huán)。

在實際開發(fā)中,break 和 continue 一般只用來跳出當前層次的循環(huán),很少有需要跳出多層循環(huán)的情況。

break 關鍵字

Shell break 關鍵字的用法為:

break n

n 表示跳出循環(huán)的層數(shù),如果省略 n,則表示跳出當前的整個循環(huán)。break 關鍵字通常和 if 語句一起使用,即滿足條件時便跳出循環(huán)。



圖1:Shell break關鍵字原理示意圖

【實例1】不斷從終端讀取用戶輸入的正數(shù),求它們相加的和:

#!/bin/bash

sum=0

while read n; do
    if((n>0)); then
        ((sum+=n))
    else
        break
    fi
done

echo "sum=$sum"

運行結果:

10↙

20↙

30↙

0↙

sum=60

while 循環(huán)通過 read 命令的退出狀態(tài)來判斷循環(huán)條件是否成立,只有當按下 Ctrl+D 組合鍵(表示輸入結束)時,
read n才會判斷失敗,此時 while 循環(huán)終止。

除了按下 Ctrl+D 組合鍵,你還可以輸入一個小于等于零的整數(shù),這樣會執(zhí)行 break 語句來終止循環(huán)(跳出循環(huán))。

【實例2】使用 break 跳出雙層循環(huán)。

如果 break 后面不跟數(shù)字的話,表示跳出當前循環(huán),對于有兩層嵌套的循環(huán),就得使用兩個 break 關鍵字。例如,輸出一個 4*4 的矩陣:

#!/bin/bash

i=0
while ((++i)); do  #外層循環(huán)
    if((i>4)); then
        break  #跳出外層循環(huán)
    fi

    j=0;
    while ((++j)); do  #內(nèi)層循環(huán)
        if((j>4)); then
            break  #跳出內(nèi)層循環(huán)
        fi
        printf "%-4d" $((i*j))
    done

    printf "\n"
done

運行結果:

1   2   3   4  
2   4   6   8  
3   6   9   12 
4   8   12  16 

當 j>4 成立時,執(zhí)行第二個 break,跳出內(nèi)層循環(huán);外層循環(huán)依然執(zhí)行,直到 i>4 成立,跳出外層循環(huán)。內(nèi)層循環(huán)共執(zhí)行了 4 次,外層循環(huán)共執(zhí)行了 1 次。

我們也可以在 break 后面跟一個數(shù)字,讓它一次性地跳出兩層循環(huán),請看下面的代碼:

#!/bin/bash

i=0
while ((++i)); do  #外層循環(huán)
    j=0;
    while ((++j)); do  #內(nèi)層循環(huán)
        if((i>4)); then
            break 2  #跳出內(nèi)外兩層循環(huán)
        fi
        if((j>4)); then
            break  #跳出內(nèi)層循環(huán)
        fi
        printf "%-4d" $((i*j))
    done

    printf "\n"
done

修改后的代碼將所有 break 都移到了內(nèi)層循環(huán)里面。讀者需要重點關注
break 2這條語句,它使得程序可以一次性跳出兩層循環(huán),也就是先跳出內(nèi)層循環(huán),再跳出外層循環(huán)。

continue 關鍵字

Shell continue 關鍵字的用法為:

continue n

n 表示循環(huán)的層數(shù):

  • 如果省略 n,則表示 continue 只對當前層次的循環(huán)語句有效,遇到 continue 會跳過本次循環(huán),忽略本次循環(huán)的剩余代碼,直接進入下一次循環(huán)。
  • 如果帶上 n,比如 n 的值為 2,那么 continue 對內(nèi)層和外層循環(huán)語句都有效,不但內(nèi)層會跳過本次循環(huán),外層也會跳過本次循環(huán),其效果相當于內(nèi)層循環(huán)和外層循環(huán)同時執(zhí)行了不帶 n 的 continue。這么說可能有點難以理解,稍后我們通過代碼來演示。

continue 關鍵字也通常和 if 語句一起使用,即滿足條件時便跳出循環(huán)。 



圖2:Shell continue關鍵字原理示意圖

【實例1】不斷從終端讀取用戶輸入的 100 以內(nèi)的正數(shù),求它們的和:

#!/bin/bash

sum=0

while read n; do
    if((n<1 || n>100)); then
        continue
    fi
    ((sum+=n))
done

echo "sum=$sum"

運行結果:

10↙

20↙

-1000↙

5↙

9999↙

25↙

sum=60

變量 sum 最終的值為 60,-1000 和 9999 并沒有計算在內(nèi),這是因為 -1000 和 9999 不在 1~100 的范圍內(nèi),if 判斷條件成立,所以執(zhí)行了 continue 語句,跳過了當次循環(huán),也就是跳過了
((sum+=n))這條語句。

注意,只有按下 Ctrl+D 組合鍵輸入才會結束,
read n才會判斷失敗,while 循環(huán)才會終止。

【實例2】使用 continue 跳出多層循環(huán),請看下面的代碼:

#!/bin/bash

for((i=1; i<=5; i++)); do
    for((j=1; j<=5; j++)); do
        if((i*j==12)); then
            continue 2
        fi
        printf "%d*%d=%-4d" $i $j $((i*j))
    done
    printf "\n"
done

運行結果:

1*1=1   1*2=2   1*3=3   1*4=4   1*5=5  
2*1=2   2*2=4   2*3=6   2*4=8   2*5=10 
3*1=3   3*2=6   3*3=9   4*1=4   4*2=8   5*1=5   5*2=10  5*3=15  5*4=20  5*5=25

從運行結果可以看出,遇到
continue 2時,不但跳過了內(nèi)層 for 循環(huán),也跳過了外層 for 循環(huán)。

break 和 continue 的區(qū)別

break 用來結束所有循環(huán),循環(huán)語句不再有執(zhí)行的機會;continue 用來結束本次循環(huán),直接跳到下一次循環(huán),如果循環(huán)條件成立,還會繼續(xù)循環(huán)。


本文名稱:Shellbreak和continue跳出循環(huán)詳解
本文來源:http://www.dlmjj.cn/article/cccieep.html