1. 程式人生 > 其它 >多重迴圈與中斷迴圈

多重迴圈與中斷迴圈

for 迴圈和while 迴圈 的 多重迴圈與中斷迴圈



1 .多重迴圈(for 和while 都可以使用多重迴圈)

#!/bin/bash

for ((i=1;i<=5;i++))
do
    echo "外迴圈為:$i"

    for (( j=1;j<=3;j++))
    do
        echo "----內迴圈為: $j"
    done

done





2 . break跳出迴圈

break 用來跳出單個迴圈,後面可以接數字,表示跳出多少層迴圈,預設則預設跳出 一 層。

2.1 break 跳出一層迴圈

#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一層迴圈為:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二層迴圈為: $j"

        for (( k=1;k<=3;k++))
        do
            echo "-----第三層迴圈為: $k"
            if [ $k -eq 2 ];then     #當k值等於2 時,條件成立
                break                 #break 跳出1 層迴圈
            fi
        done

    done

done






2.2 break 跳出多層

#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一層迴圈為:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二層迴圈為: $j"

        for (( k=1;k<=3;k++))
        do
            echo "-----第三層迴圈為: $k"
            if [ $k -eq 2 ];then     #當k值等於2 時,條件成立
                break  2               #break 跳出2層迴圈
            fi
        done

    done

done



3.continue 終止本次迴圈,不執行後續命令,但是不跳出迴圈

#!/bin/bash

for ((i=1;i<=3;i++))
do
    echo "#第一層迴圈為:$i"

    for (( j=1;j<=3;j++))
    do
        echo "--第二層迴圈為: $j"

        if [ $j -eq 2 ];then   #當 j 值等於2 時為真
            continue          #終止本次迴圈,不執行後續的語句
        fi
        echo "你好"

    done

done



因為continue 是終止當前1 次 迴圈,不執行後續語句,而不是跳出迴圈,所以,如果在while 迴圈裡使用 continue 命令時,需要注意位置,避免出現死迴圈



4.while 迴圈的死迴圈

4.1 這是正常的while 迴圈

#!/bin/bash

#設定變數a 的初始值為0
a=0

while [ $a -lt  3 ] #當變數a 的值小於3時,條件成立
do
    echo “您好”
    let a++      #每次迴圈,變數a 的值加1
done



4.2 當continue 使用不當,使條件裡的變數沒有進行迭代,造成死迴圈

#!/bin/bash

#設定變數a 的初始值為0
a=0

while [ $a -lt  3 ] #當變數a 的值小於3時,條件成立
do
    echo “您好”

    continue     #continue 後面的語句不會被執行,所以,後面let a++不會生效,造成a值恆為0,使得while 的判斷句一直有效,造成死迴圈
    let a++      #每次迴圈,變數a 的值加1,因為寫在 continue語句後面,所以不會被執
行

done

執行指令碼後,一直 輸出“您好” ,按ctrl +c 結束