
- Unix / Linux 初學者指南
- Unix / Linux - 首頁
- Unix / Linux - 什麼是 Linux?
- Unix / Linux - 入門
- Unix / Linux - 檔案管理
- Unix / Linux - 目錄
- Unix / Linux - 檔案許可權
- Unix / Linux - 環境
- Unix / Linux - 基本實用程式
- Unix / Linux - 管道與過濾器
- Unix / Linux - 程序
- Unix / Linux - 通訊
- Unix / Linux - vi 編輯器
- Unix / Linux Shell 程式設計
- Unix / Linux - Shell 指令碼
- Unix / Linux - 什麼是 Shell?
- Unix / Linux - 使用變數
- Unix / Linux - 特殊變數
- Unix / Linux - 使用陣列
- Unix / Linux - 基本運算子
- Unix / Linux - 決策
- Unix / Linux - Shell 迴圈
- Unix / Linux - 迴圈控制
- Unix / Linux - Shell 替換
- Unix / Linux - 引號機制
- Unix / Linux - I/O 重定向
- Unix / Linux - Shell 函式
- Unix / Linux - 手冊頁幫助
- 高階 Unix / Linux
- Unix / Linux - 標準 I/O 流
- Unix / Linux - 檔案連結
- Unix / Linux - 正則表示式
- Unix / Linux - 檔案系統基礎
- Unix / Linux - 使用者管理
- Unix / Linux - 系統性能
- Unix / Linux - 系統日誌
- Unix / Linux - 訊號和陷阱
Unix / Linux - Shell 迴圈控制
在本章中,我們將討論 Unix 中的 shell 迴圈控制。到目前為止,您已經瞭解瞭如何建立迴圈以及如何使用迴圈來完成不同的任務。有時您需要停止迴圈或跳過迴圈的迭代。
在本章中,我們將學習以下兩個用於控制 shell 迴圈的語句:
break 語句
continue 語句
無限迴圈
所有迴圈都有一個有限的生命週期,並且一旦條件為假或為真(取決於迴圈),它們就會退出。
如果未滿足所需的條件,迴圈可能會永遠持續下去。一個永遠執行而不會終止的迴圈會執行無限次。因此,此類迴圈稱為無限迴圈。
示例
這是一個簡單的示例,它使用while迴圈顯示數字 0 到 9:
#!/bin/sh a=10 until [ $a -lt 10 ] do echo $a a=`expr $a + 1` done
此迴圈將永遠持續下去,因為a始終大於或等於 10,並且永遠不會小於 10。
break 語句
break語句用於終止整個迴圈的執行,在完成執行 break 語句之前的所有程式碼行後。然後它跳到迴圈結束後的程式碼。
語法
以下break語句用於退出迴圈:
break
break 命令也可以用於使用此格式退出巢狀迴圈:
break n
這裡n指定要退出的第nth個封閉迴圈。
示例
這是一個簡單的示例,它顯示一旦a變為 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
這是一個巢狀 for 迴圈的簡單示例。如果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
執行後,您將收到以下結果。在內部迴圈中,您有一個帶引數 2 的 break 命令。這表示如果滿足條件,您應該退出外部迴圈,並最終也從內部迴圈退出。
1 0 1 5
continue 語句
continue語句類似於break命令,不同之處在於它會導致當前迴圈迭代退出,而不是整個迴圈。
當發生錯誤但您想嘗試執行迴圈的下一迭代時,此語句很有用。
語法
continue
與 break 語句一樣,可以給 continue 命令提供一個整數引數以跳過巢狀迴圈中的命令。
continue n
這裡n指定要從第nth個封閉迴圈繼續執行。
示例
以下迴圈使用了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