天天看點

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

Shell中的for循環可以使用seq來定義循環的數字範圍,圖中定義的就是循環1-100的數字。圖中的示例是計算1-100所有數字的和,shell中的數學運算需要使用方括号括起來,但是不需要像if的方括号那樣加上空格。

将圖中的例子改一下,每次循環都列印一下相加的結果:

代碼示例:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

<br><br>

運作結果:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

<br><br><br>

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

<br>

在shell中,for循環經常用來周遊某個目錄下的檔案,示例:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

注意:在for循環的循環條件中,它會把循環對象中的空格或者回車當做一個分隔符,例如上例中,for的循環條件對象是ls /etc/ 這個指令列出來的檔案名稱。如果這些檔案命名稱包含空格,for循環就會把這個檔案名稱給分成兩個對象進行循環,例如我現在建立一個檔案,檔案名稱包含空格,然後使用for循環去周遊看看會發生什麼:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

  圖中,我建立了兩個檔案,這兩個檔案的名稱都包含了空格,\ 是用于脫義空格的脫義符,沒有脫義符的話touch指令會把空格當做分隔符。

然後使用for循環去周遊:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

如圖,可以看到帶有空格的檔案名被分隔開了,這是for循環的一個特點使用時需要注意。

<br><br><br><br>

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

圖中代碼示例,用于完成每隔半分鐘就檢查系統的負載,當系統負載大于10的時候,就發送一份郵件,很顯然這是一個常見的監控腳本。

在while的循環條件中使用 “ : ”、“ true ”、“ 1 ”作為循環條件的話,就是死循環,是以上例中的while循環是一個死循環。

示例:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

檢視運作過程:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

以上代碼用于檢測使用者輸入的内容是否是一個純數字,如果不是的話,就會提示輸入的不正确,并且結束本次循環進入下一次循環,如果使用者輸入的是純數字,就會跳出這個循環,列印使用者輸入的内容:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

break能夠跳出整個循環讓循環不再執行,示例:

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

比較數字的時候使用 -eq ,比較字元串的時候用 ==

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

如圖,循環在i等于3的時候就結束了循環。

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

continue是用于結束本次循環,進入下一次循環。當continue被執行後,continue後面的代碼都不會被執行,而是從循環的第一句開始重新執行循環體。

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

如圖,當i等于3的時候就重新開始了循環,後面的代碼就不再執行了。

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

exit是退出整個腳本的執行,break隻是跳出循環,而且break和continue都是在循環中使用的,而exit則可以在腳本的任意地方使用,一旦exit被執行,整個腳本就會結束,無論後面有沒有代碼都會結束。

shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本
shell腳本循環語句20.10 for循環20.11/20.12 while循環20.13 break跳出循環20.14 continue結束本次循環20.15 exit退出整個腳本

如圖,當i等于3的時候就退出了整個腳本的執行,後面的代碼就不會被執行了,exit可以用于傳回一個數字,我們使用的echo $? 列印的數字就是腳本中exit傳回出來的數字。

本文轉自 ZeroOne01 51CTO部落格,原文連結:http://blog.51cto.com/zero01/2043636,如需轉載請自行聯系原作者