多重迴圈與中斷迴圈
阿新 • • 發佈:2021-07-20
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 結束