Shell 迴圈控制break/continue


到目前為止,我們已經看到了,建立迴圈和使用迴圈來完成不同的任務。有時候,你需要停止迴圈或跳過迴圈疊代。

在本教學中,您將了解以下兩個語句用於控制 Shell 迴圈:

  1. break 語句

  2. continue 語句

無限迴圈:

迴圈有限的生命,他們跳出來,一旦條件是 false 還是 false 取決於迴圈。

由於所需的條件是不符合一個迴圈可能永遠持續下去。永遠不會終止執行一個迴圈執行無限次數。出於這個原因,這樣的迴圈被稱為無限迴圈。

例子:

下面是一個簡單的例子,使用while迴圈顯示數位0到9:

#!/bin/sh

a=10

while [ $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

這個迴圈將永遠持續下去,因為常是大於10,它永遠不會成為小於10。所以這是無限迴圈真實的例子。

break語句:

break語句用於終止整個迴圈的執行,完成後所有行程式碼break語句的執行。然後,它逐級的程式碼跟在迴圈結束。

語法

將用於以下break語句退出迴圈:

break

將用於以下break語句退出迴圈:

break n

這裡n指定的第n個封閉的迴圈退出。

例子:

下面是一個簡單的例子展示了迴圈將終止只要一變為5:

#!/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

下面是一個簡單的巢狀迴圈的例子。這個指令碼打破兩個迴圈,如果的 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

這將產生以下結果。內迴圈有一個 break 命令與引數2。這表明,如果條件得到滿足應該跳出外迴圈,並最終從內迴圈跳出。

1 0
1 5

continue 語句:

continue語句break命令類似,但它會導致當前疊代的迴圈退出,而不是整個迴圈。

這種引數是有用的,當一個錯誤已經發生,但你想嘗試執行下一個迴圈疊代。

語法

continue

和break語句一樣,一個整數引數可以給continue命令跳過巢狀迴圈的命令。

continue n

這裡n指定第n個封閉迴圈 continue 。

例子:

下面的迴圈利用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