到目前為止,我們已經看到了,創(chuàng)建循環(huán)和使用循環(huán)來完成不同的任務。有時候,你需要停止循環(huán)或跳過循環(huán)迭代。
在本教程中,您將了解以下兩個語句用于控制 Shell 循環(huán):
break 語句
continue 語句
循環(huán)有限的生命,他們跳出來,一旦條件是 false 還是 false 取決于循環(huán)。
由于所需的條件是不符合一個循環(huán)可能永遠持續(xù)下去。永遠不會終止執(zhí)行一個循環(huán)執(zhí)行無限次數。出于這個原因,這樣的循環(huán)被稱為無限循環(huán)。
下面是一個簡單的例子,使用while循環(huán)顯示數字0到9:
#!/bin/sh a=10 while [ $a -lt 10 ] do echo $a a=`expr $a + 1` done
這個循環(huán)將永遠持續(xù)下去,因為常是大于10,它永遠不會成為小于10。所以這是無限循環(huán)真實的例子。
break語句用于終止整個循環(huán)的執(zhí)行,完成后所有行代碼break語句的執(zhí)行。然后,它逐級的代碼跟在循環(huán)結束。
將用于以下break語句退出循環(huán):
break
將用于以下break語句退出循環(huán):
break n
這里n指定的第n個封閉的循環(huán)退出。
下面是一個簡單的例子展示了循環(huán)將終止只要一變?yōu)?:
#!/bin/sh a=0 while [ $a -lt 10 ] do echo $a if [ $a -eq 5 ] then break fi a=`expr $a + 1` done
這將產生以下結果:
0 1 2 3 4 5
下面是一個簡單的嵌套循環(huán)的例子。這個腳本打破兩個循環(huán),如果的 var1 等于2 和 var2 等于0:
#!/bin/sh for var1 in 1 2 3 do for var2 in 0 5 do if [ $var1 -eq 2 -a $var2 -eq 0 ] then break 2 else echo "$var1 $var2" fi done done
這將產生以下結果。內循環(huán)有一個 break 命令與參數2。這表明,如果條件得到滿足應該跳出外循環(huán),并最終從內循環(huán)跳出。
1 0 1 5
continue語句break命令類似,但它會導致當前迭代的循環(huán)退出,而不是整個循環(huán)。
這種參數是有用的,當一個錯誤已經發(fā)生,但你想嘗試執(zhí)行下一個循環(huán)迭代。
continue
和break語句一樣,一個整數參數可以給continue命令跳過嵌套循環(huán)的命令。
continue n
這里n指定第n個封閉循環(huán) continue 。
下面的循環(huán)利用continue語句返回,并開始處理下一個語句:
#!/bin/sh NUMS="1 2 3 4 5 6 7" for NUM in $NUMS do Q=`expr $NUM % 2` if [ $Q -eq 0 ] then echo "Number is an even number!!" continue fi echo "Found odd number" done
這將產生以下結果:
Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number