Linux-scripts-循環控制

9.Scripts

本章同步視頻:https://edu.51cto.com/sd/e4874

9.5.6 break

1.格式與說明

break n

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

                                              image.png

注:本圖有點小瑕疵,不該有“done”到“循環結束”的箭頭

 

2.案例1——求幾個正數的和

#!/bin/bash

sum=0

while read n; do

    if((n>0)); then

        ((sum+=n))

    else

        break

    fi

done

echo "sum=$sum"

#輸入0或者負數結束,也可以按Ctrl+D結束。

3.案例2——多個循環中的break

[root@localhost tmp]# vim 1.sh

#!/bin/bash

i=0

while ((++i)); do  #外層循環

    if((i>4)); then

        break  #跳出外層循環

    fi

    j=0;

    while ((++j)); do  #內層循環

        if((j>4)); then

            break  #跳出內層循環

        fi

        printf "%-4d" $((i*j))

    done

    printf "\n"

done

[root@localhost tmp]# sh 1.sh

1   2   3   4  

2   4   6   8  

3   6   9   12 

4   8   12  16 

4.案例3——使用 break 跳出雙層循環。

[root@localhost tmp]# vim 1.sh

#!/bin/bash

i=0

while ((++i)); do  #外層循環

    j=0;

    while ((++j)); do  #內層循環

        if((i>4)); then

            break 2  #跳出內外兩層循環

        fi

        if((j>4)); then

            break  #跳出內層循環

        fi

        printf "%-4d" $((i*j))

    done

    printf "\n"

done

[root@localhost tmp]# sh 1.sh

1   2   3   4  

2   4   6   8  

3   6   9   12 

4   8   12  16 

9.5.7 continue

1.格式和說明

continue n

說明:

u  n 表示循環的層數:

u  如果省略 n,則表示 continue 只對當前層次的循環語句有效,遇到 continue 會跳過本次循環,忽略本次循環的剩餘代碼,直接進入下一次循環。

u  如果帶上 n,比如 n 的值爲 2,那麼 continue 對內層和外層循環語句都有效,不但內層會跳過本次循環,外層也會跳過本次循環,其效果相當於內層循環和外層循環同時執行了不帶 n 的 continue。

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

image.png

注:本圖有一點瑕疵,不該有“done”到“循環結束”的箭頭。

2.案例1

#!/bin/bash

sum=0

while read n; do

    if((n<1 || n>100)); then

        continue

    fi

    ((sum+=n))

done

echo "sum=$sum"

#注:本例只能用Ctrl+D結束。

3.案例2——跳出多重循環

[root@localhost tmp]# vim 1.sh

#!/bin/bash

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

    for((j=1; j<=5; j++)); do

        if((i*j==12)); then

            continue 2      #結束j的本輪循環,跳到i的下一次循環

        fi

        printf "%d*%d=%-4d" $i $j $((i*j))

    done

    printf "\n"

done

[root@localhost tmp]# sh 1.sh

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 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章