新聞中心

肥東網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
Shell while 循環(huán)的用法如下:
while condition
do
statements
done
condition表示判斷條件,
statements表示要執(zhí)行的語句(可以只有一條,也可以有多條),
do和
done都是 Shell 中的關(guān)鍵字。
while 循環(huán)的執(zhí)行流程為:
- 先對 condition 進(jìn)行判斷,如果該條件成立,就進(jìn)入循環(huán),執(zhí)行 while 循環(huán)體中的語句,也就是 do 和 done 之間的語句。這樣就完成了一次循環(huán)。
- 每一次執(zhí)行到 done 的時候都會重新判斷 condition 是否成立,如果成立,就進(jìn)入下一次循環(huán),繼續(xù)執(zhí)行 do 和 done 之間的語句,如果不成立,就結(jié)束整個 while 循環(huán),執(zhí)行 done 后面的其它 Shell 代碼。
- 如果一開始 condition 就不成立,那么程序就不會進(jìn)入循環(huán)體,do 和 done 之間的語句就沒有執(zhí)行的機(jī)會。
注意,在 while 循環(huán)體中必須有相應(yīng)的語句使得 condition 越來越趨近于“不成立”,只有這樣才能最終退出循環(huán),否則 while 就成了死循環(huán),會一直執(zhí)行下去,永無休止。
while 語句和 if else 語句中的 condition 用法都是一樣的,你可以使用 test 或 [] 命令,也可以使用 (()) 或 [[]],遺忘的讀者請猛擊下面的鏈接回顧:
- Shell if else
- Shell退出狀態(tài)
- Shell test命令
- Shell [[]]
while 循環(huán)舉例
【實例1】計算從 1 加到 100 的和。
#!/bin/bash
i=1
sum=0
while ((i <= 100))
do
((sum += i))
((i++))
done
echo "The sum is: $sum"
運行結(jié)果:
The sum is: 5050
在 while 循環(huán)中,只要判斷條件成立,循環(huán)就會執(zhí)行。對于這段代碼,只要變量 i 的值小于等于 100,循環(huán)就會繼續(xù)。每次循環(huán)給變量 sum 加上變量 i 的值,然后再給變量 i 加 1,直到變量 i 的值大于 100,循環(huán)才會停止。
i++語句使得 i 的值逐步增大,讓判斷條件越來越趨近于“不成立”,最終退出循環(huán)。
對上面的例子進(jìn)行改進(jìn),計算從 m 加到 n 的值。
#!/bin/bash
read m
read n
sum=0
while ((m <= n))
do
((sum += m))
((m++))
done
echo "The sum is: $sum"
運行結(jié)果:
1↙
100↙
The sum is: 5050
【實例2】實現(xiàn)一個簡單的加法計算器,用戶每行輸入一個數(shù)字,計算所有數(shù)字的和。
#!/bin/bash
sum=0
echo "請輸入您要計算的數(shù)字,按 Ctrl+D 組合鍵結(jié)束讀取"
while read n
do
((sum += n))
done
echo "The sum is: $sum"
運行結(jié)果:
12↙
33↙
454↙
6767↙
1↙
2↙
The sum is: 7269
在終端中讀取數(shù)據(jù),可以等價為在文件中讀取數(shù)據(jù),按下 Ctrl+D 組合鍵表示讀取到文件流的末尾,此時 read 就會讀取失敗,得到一個非 0 值的退出狀態(tài),從而導(dǎo)致判斷條件不成立,結(jié)束循環(huán)。
文章標(biāo)題:Shellwhile循環(huán)詳解
本文路徑:http://m.5511xx.com/article/dhjdigi.html


咨詢
建站咨詢
