Linux shell 編程(八):循環結構

循環語句

在shell中的循環語句如下:

  1. for
  2. while
  3. unitl
  4. case
  5. select

for/while/unitl 必須以done結尾

for循環

for循環用來遍歷數組(數據列表)或執行計算語句。

在shell中 for循環有兩種形式

Linux shell 編程(八):循環結構

Linux shell 編程(八):循環結構

第一種用來遍歷word序列的數據 word可以是以空格分隔的單詞,數組變量或是數字區間/字母區間。
示例:

Linux shell 編程(八):循環結構

循環次數爲數據序列的個數,每一次循環時會把變量i賦值爲本次循環到的數據,可以用在循環體中訪問變量i。

第二種,示例:

Linux shell 編程(八):循環結構

在上面的循環中,expr1i=0;expr2i<10;expr3i++,其中expr1在循環開始之前執行,expr2定義了運行循環的條件,expr3在循環中執行。

while循環

while 循環會在指定條件爲真時循環執行代碼塊。

語法:

Linux shell 編程(八):循環結構

``list-1可以是命令,表達式,如果命令或表達式一直爲真則繼續執行list-2``` 直到不爲真停止循環。
示例:

Linux shell 編程(八):循環結構

如果命令ls執行成功,則會一直執行命令echo,和ls,直到命令執行失敗。

示例2,使用表達式:

Linux shell 編程(八):循環結構

在上面的例子中,首先定義了一個變量i賦值爲0,然後用表達式判斷i的值是否小於10,如果小於10則執行while循環體中的命令,let i++每執行一次i加1,當i=10時i不小於10,循環結束。

until循環

until循環是 while 循環的變體。該循環會在檢查條件是否爲真,如果條件爲真的話,就會退出這個循環。

語法:
Linux shell 編程(八):循環結構

示例:

Linux shell 編程(八):循環結構
當命令ls執行成功時循環結束,until循環會先判斷ls是否執行成功,如果成功則不繼續循環,否則繼續循環,直到命令執行成功。

while循環一樣,until也可以判斷表達式,如果表達式執行成功則跳出循環。

Linux shell 編程(八):循環結構

case語句

case語句是一個模式匹配語句,基於不同的條件來執行不同的動作,語法如下:
Linux shell 編程(八):循環結構

它會用word嘗試與pattern匹配,如果匹配則運行該模式下的命令.
示例:

Linux shell 編程(八):循環結構
在上面的示例中,將cash.sh傳入的第一個參數做匹配,每個模式下的命令必須以;;結束,而case語句必須以esac結束。*爲默認匹配,如果前面的模式都不能匹配,則運行該模式下的命令,如果一個模式下不想執行命令可以輸入兩個分號;;結束。

select語句

select 語句可以打印一個選項列表,用於與用戶交互。
語法:
Linux shell 編程(八):循環結構

select將定義一個變量name,然後從word中將用戶選擇的編號對應的word數據序列中對應的索引的值賦值給name

在下面的列子中,我將selelctcase語句結合起來使用。

Linux shell 編程(八):循環結構

當執行test.sh腳本時,···select將序列數據打印處理供用戶選擇,而select只接受數字序列,然後case語句將用戶選擇的數據做匹配,做出相應的動作。<br/>當用戶選擇1時,select將其序列數據中的位置1的值賦值給變量i,傳遞到case```語句,然後做出相應的動作。

breakcontinue語句

breakcontinue可以跳出循環。不同的是break會跳出循環,而continue會忽略當此循環,繼續下載循環。它們可以在for,while,until循環中使用。

break語句

Linux shell 編程(八):循環結構

在上面的列子中,當i等於2時,當2 % 2 == 0,則會跳出for循環,下面的循環將不會繼續。

continue語句

Linux shell 編程(八):循環結構

在上面的列子中,當i % 2 == 0時,continue語句會終止當次循環,繼續執行下次循環,從而輸出1-10中的奇數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章