Shell 循環(huán)控制break/continue

2021-08-31 09:44 更新

到目前為止,我們已經(jīng)看到了,創(chuàng)建循環(huán)和使用循環(huán)來完成不同的任務(wù)。有時(shí)候,你需要停止循環(huán)或跳過循環(huán)迭代。

在本教程中,您將了解以下兩個(gè)語句用于控制 Shell 循環(huán):

  1. break 語句
  2. continue 語句

無限循環(huán):

循環(huán)有限的生命,他們跳出來,一旦條件是 false 還是 false 取決于循環(huán)。

由于所需的條件是不符合一個(gè)循環(huán)可能永遠(yuǎn)持續(xù)下去。永遠(yuǎn)不會(huì)終止執(zhí)行一個(gè)循環(huán)執(zhí)行無限次數(shù)。出于這個(gè)原因,這樣的循環(huán)被稱為無限循環(huán)。

例子:

下面是一個(gè)簡單的例子,使用while循環(huán)顯示數(shù)字0到9:

#!/bin/sh

a=10

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

這個(gè)循環(huán)將永遠(yuǎn)持續(xù)下去,因?yàn)槌J谴笥?0,它永遠(yuǎn)不會(huì)成為小于10。所以這是無限循環(huán)真實(shí)的例子。

break語句:

break語句用于終止整個(gè)循環(huán)的執(zhí)行,完成后所有行代碼break語句的執(zhí)行。然后,它逐級(jí)的代碼跟在循環(huán)結(jié)束。

語法

將用于以下break語句退出循環(huán):

break

將用于以下break語句退出循環(huán):

break n

這里n指定的第n個(gè)封閉的循環(huán)退出。

例子:

下面是一個(gè)簡單的例子展示了循環(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

這將產(chǎn)生以下結(jié)果:

0
1
2
3
4
5

下面是一個(gè)簡單的嵌套循環(huán)的例子。這個(gè)腳本打破兩個(gè)循環(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

這將產(chǎn)生以下結(jié)果。內(nèi)循環(huán)有一個(gè) break 命令與參數(shù)2。這表明,如果條件得到滿足應(yīng)該跳出外循環(huán),并最終從內(nèi)循環(huán)跳出。

1 0
1 5

continue 語句:

continue語句break命令類似,但它會(huì)導(dǎo)致當(dāng)前迭代的循環(huán)退出,而不是整個(gè)循環(huán)。

這種參數(shù)是有用的,當(dāng)一個(gè)錯(cuò)誤已經(jīng)發(fā)生,但你想嘗試執(zhí)行下一個(gè)循環(huán)迭代。

語法

continue

和break語句一樣,一個(gè)整數(shù)參數(shù)可以給continue命令跳過嵌套循環(huán)的命令。

continue n

這里n指定第n個(gè)封閉循環(huán) continue 。

例子:

下面的循環(huán)利用continue語句返回,并開始處理下一個(gè)語句:

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

這將產(chǎn)生以下結(jié)果:

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

 



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)