UNIX Shell循環(huán)控制

2018-12-09 15:41 更新

Shell循環(huán)控制

到目前為止你已經(jīng)學習過創(chuàng)建循環(huán)以及用循環(huán)來完成不同的任務。有時候你需要停止循環(huán)或跳出循環(huán)迭代。

在本教程中你將學到以下語句用于控制 Shell 循環(huán):

  • break 語句
  • continue 語句

無限循環(huán)

所有循環(huán)都有一個有限的生命周期。當條件為假或真時它們將跳出循環(huán),這取決于這個循環(huán)。

一個循環(huán)可能會由于未匹配到適合得條件而無限執(zhí)行。一個永遠執(zhí)行沒有終止的循環(huán)會執(zhí)行無數(shù)次。因此,這種循環(huán)被稱為無限循環(huán)。

例子

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

    #!/bin/sh

    a=10

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

這個循環(huán)將永遠持續(xù)下去,因為 a 總是大于或等于 10,它永遠不會小于 10。所以這正是無限循環(huán)的一個恰當?shù)睦印?/p>

break 語句

所有在 break 語句之前得語句執(zhí)行結(jié)束后執(zhí)行 break 語句,break 語句用于跳出整個循環(huán)。然后執(zhí)行循環(huán)體后面的代碼。然后在循環(huán)結(jié)束后運行接下來的代碼。

語法

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

    break

break 語句也可以使用這種格式來退出嵌套循環(huán)式:

    break n

在這里 n 指定封閉循環(huán)執(zhí)行的次數(shù)然后退出循環(huán)。

例子

這里是一個簡單的例子,用來說明只要 a 變成 5 循環(huán)將終止:

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

這里是一個簡單的嵌套 for 循環(huán)的例子。如果 var1 等于 var2 以及 var2 等于 0 ,則這個腳本將跳出這個雙重循環(huán):

    #!/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)中,有一個 break 命令,其參數(shù)為 2。這表明,你應該打破外循環(huán)和內(nèi)循環(huán)才能滿足條件。

    1 0
    1 5

continue 語句

continue 語句類似于 break 命令,二者不同之處在于,continue 語句用語結(jié)束當前循環(huán),能引起當前循環(huán)的迭代的退出,而不是整個循環(huán)。

這個語句在當程序發(fā)生了錯誤,但你想執(zhí)行下一次循環(huán)的時候是非常有用的。

語法

    continue

正如 break 語句,一個整型參數(shù)可以傳遞給 continue 命令以從嵌套循環(huán)中跳過命令。

    continue n

在這里 n 指定封閉循環(huán)執(zhí)行的次數(shù)然后進入下一次循環(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

這會產(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)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號