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

循環語句

在shell中的循環語句以下:shell

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

for/while/unitl 必須以done結尾編程

for循環

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

在shell中 for循環有兩種形式ide

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

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

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

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

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

第二種,示例:blog

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

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

while循環

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

語法:class

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中的奇數。

相關文章
相關標籤/搜索