Shell while循環詳解


while 循環是 Shell 腳本中最簡單的一種循環,當條件滿足時,while 重復地執行一組語句,當條件不滿足時,就退出 while 循環。

Shell while 循環的用法如下:

while condition
do
    statements
done

condition表示判斷條件,statements表示要執行的語句(可以只有一條,也可以有多條),dodone都是 Shell 中的關鍵字。

while 循環的執行流程為:

  • 先對 condition 進行判斷,如果該條件成立,就進入循環,執行 while 循環體中的語句,也就是 do 和 done 之間的語句。這樣就完成了一次循環。
  • 每一次執行到 done 的時候都會重新判斷 condition 是否成立,如果成立,就進入下一次循環,繼續執行 do 和 done 之間的語句,如果不成立,就結束整個 while 循環,執行 done 后面的其它 Shell 代碼。
  • 如果一開始 condition 就不成立,那么程序就不會進入循環體,do 和 done 之間的語句就沒有執行的機會。


注意,在 while 循環體中必須有相應的語句使得 condition 越來越趨近於“不成立”,只有這樣才能最終退出循環,否則 while 就成了死循環,會一直執行下去,永無休止。

while 語句和 if else 語句中的 condition 用法都是一樣的,你可以使用 test 或 [] 命令,也可以使用 (()) 或 [[]],遺忘的讀者請猛擊下面的鏈接回顧:

while 循環舉例

【實例1】計算從 1 加到 100 的和。

  1. #!/bin/bash
  2. i=1
  3. sum=0
  4. while ((i <= 100))
  5. do
  6. ((sum += i))
  7. ((i++))
  8. done
  9. echo "The sum is: $sum"

運行結果:
The sum is: 5050

在 while 循環中,只要判斷條件成立,循環就會執行。對於這段代碼,只要變量 i 的值小於等於 100,循環就會繼續。每次循環給變量 sum 加上變量 i 的值,然后再給變量 i 加 1,直到變量 i 的值大於 100,循環才會停止。

i++語句使得 i 的值逐步增大,讓判斷條件越來越趨近於“不成立”,最終退出循環。

對上面的例子進行改進,計算從 m 加到 n 的值。

  1. #!/bin/bash
  2. read m
  3. read n
  4. sum=0
  5. while ((m <= n))
  6. do
  7. ((sum += m))
  8. ((m++))
  9. done
  10. echo "The sum is: $sum"

運行結果:
1↙
100↙
The sum is: 5050

【實例2】實現一個簡單的加法計算器,用戶每行輸入一個數字,計算所有數字的和。

  1. #!/bin/bash
  2. sum=0
  3. echo "請輸入您要計算的數字,按 Ctrl+D 組合鍵結束讀取"
  4. while read n
  5. do
  6. ((sum += n))
  7. done
  8. echo "The sum is: $sum"

運行結果:
12↙
33↙
454↙
6767↙
1↙
2↙
The sum is: 7269

在終端中讀取數據,可以等價為在文件中讀取數據,按下 Ctrl+D 組合鍵表示讀取到文件流的末尾,此時 read 就會讀取失敗,得到一個非 0 值的退出狀態,從而導致判斷條件不成立,結束循環。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM