shell程式設計 while和until迴圈

2021-10-02 20:02:22 字數 2762 閱讀 3007

while迴圈是shell指令碼中最簡單的一種迴圈,當條件滿足時,while重複地執行一組語句;當條件不滿足時,就退出while迴圈。

shell while迴圈的用法如下:

while condition

dostatements

done

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

while迴圈的執行流程為:先對condition進行判斷,如果該條件成立,就進入迴圈,執行while迴圈體中的語句,也就是do和done之間的語句。這樣就完成了一次迴圈。每一次執行到done的時候都會重新判斷condition是否成立,如果成立,就進入下一次迴圈,繼續執行do和done之間的語句,如果不成立,就結束整個while迴圈,執行done後面的其它shell**。如果一開始condition就不成立,那麼程式就不會進入迴圈體,do和done之間的語句就沒有執行的機會。

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

while語句和if else語句中的condition用法都是一樣的,可以使用test或命令,也可以使用(())或。

#!/bin/bash

i=1sum=0

while

(( i <= 100))do

(( sum += i))(

( i++))

done

echo

"sum=$sum"

結果:

sum=5050

#!/bin/bash

read m

read n

sum=0

while

((m<=n))do

((sum+=m))(

(m++))

done

echo

"the sum is:$sum"

結果:410

the sum is:49

練習:實現乙個簡單的加法計算器,使用者每行輸入乙個數字,計算所有數字的和(請輸入您要的計算的數字,按ctrl+d組合鍵結束讀取)

#!/bin/bash

sum=0

echo

"請輸入要計算的數字 按crtl+d組合鍵結束讀取:"

while read ado(

(sum+=a)

)done

echo

"sum=$sum"

結果:

請輸入要計算的數字 按crtl+d組合鍵結束讀取:13

463sum=17

==注意:==在終端讀取資料,可以等於在檔案中讀取資料,按下ctrl+d組合鍵表示讀取到檔案流的末尾,此時read就會讀取失敗,得到乙個非零的退出狀態,從而導致判斷條件不成立,結束迴圈。

until迴圈和while迴圈恰好相反,當判斷條件不成立時才進行迴圈,一旦判斷條件成立,就終止迴圈。until的使用場景很少,一般使用while即可。

shell until迴圈的用法如下:

until condition

dostatements

done

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

until迴圈的執行流程為:先對condition進行判斷,如果該條件不成立,就進入迴圈,執行until迴圈體中的語句(do和done之間的語句),這樣就完成了一次迴圈。每一次執行到done的時候都會重新判斷condition是否成立,如果不成立,就進入下一次迴圈,繼續執行迴圈體中的語句,如果成立,就結束整個until迴圈,執行done後面的其它shell**。如果一開始condition就成立,那麼程式就不會進入迴圈體,do和done之間的語句就沒有執行的機會。注意:在until迴圈體中必須有相應的語句使得condition越來越趨近於「成立」,只有這樣才能最終退出迴圈,否則until就成了死迴圈,會一直執行下去,永無休止。

#!/bin/bash

i=1sum=0

until

((i>100))do

((sum+=i))(

(i++))

done

echo

"sum=$sum"

結果:

sum=5050

#!/bin/bash

until

[-z "$1"

]# -z:用來檢測乙個變數是否含有資料

doecho

"$@"

shift

done

結果:

1 2 3 4 5 6 7 8 9

2 3 4 5 6 7 8 9

3 4 5 6 7 8 9

4 5 6 7 8 9

5 6 7 8 9

6 7 8 9

7 8 9

8 99

#!/bin/bash

val1=100

until

[$val1

-eq 0 ]

doecho

$val1

val1=$[

$val1

-25 ]

done

結果:

10075

5025

shell程式設計while

指令碼程式設計 順序結構 選擇結構 ifcase 迴圈結構 forwhile until while迴圈 適用於迴圈次數未知的場景,要有退出條件 語法 while condition do statement done 計算100以內所有正整數的和 bin bash declare i i 1 de...

shell 程式設計之while迴圈和for迴圈

一 while迴圈 1.語法 一 while語句結構 條件為真時,執行迴圈體 while 條件 do 迴圈體 done 二 until語法結構 條件為假時,一直執行迴圈體 直到條件變為真 until 條件 do 迴圈體 done二 for迴圈 shell風格語法 for 變數名 in 取值列表 do...

Shell指令碼程式設計while迴圈

while 語句 do 執行語句 done接下來將會通過兩個簡單並且經常的使用的例子講解 bin bash i 1while i le 10 do i expr i 1 done echo i其中lele le表示不大於,exp rexpr expr 表示是相加運算 原始檔為 1 192.168.1...