for while 與 until的 差別

2021-06-02 14:36:44 字數 2301 閱讀 3056

bash shell中常用的loop有如下三種:

* for

* while

* until

for loop 是從乙個清單列表中讀進變數值,並「依次「的迴圈執行 do 到 done 之間的命令列。

for var in one two three four five

do echo -----------

echo '$var is ' $var

echo

done

倘若for loop 沒有使用in 這個 keyword 來指定變數值清單的話,其值將從 $@ (或 $*)中繼承:

for var;

do.....

done

for loop 用於處理"清單"(list)專案非常方便,

其清單除了可明確指定或從 positional parameter 取得之外,

然而,對於一些"累計變化"的專案(如整數加減),for 亦能處理:

for ((i=1; i<=10; i++))

do echo "num is $i"

done

除了 for loop ,上面的例子我們也可改用  while loop 來做到:

num=1

while [ "$num" -le 10 ]; do

echo "num is $num"

num=$(($num+1))

done

注: [ ]與其內的字元要有空白符間隔。

while loop 的原理與 for loop 稍有不同:

它不是逐次處理清單中的變數值,而是取決於 while 後面的命令列之 return value :

* 若為 ture ,則執行 do 與 done 之間的命令,然後重新判斷 while 後的 return value 。

* 若為 false ,則不再執行 do 與 done 之間的命令而結束迴圈。

我們不難發現:

* 若 while 的測試結果永遠為 true 的話,那迴圈將一直永久執行下去:

while :; do

echo looping...

done

上例的" : "是 bash 的 null command ,不做任何動作,除了送回 true 的 return value 。

因此這個迴圈不會結束,稱作死迴圈。

死迴圈的產生有可能是故意設計的(如跑 daemon),也可能是設計錯誤。

若要結束死尋環,可透過 signal 來終止(如按下 ctrl-c )。

* 與 while 相反,until 是在 return value 為 false 時進入迴圈,否則結束。

因此,前面的例子我們也可以輕鬆的用  until 來寫:

num=1

until [ ! "$num" -le 10 ]; do

echo "num is $num"

num=$(($num+1))

done

或是:

num=1

until [ "$num" -gt 10]; do

echo "num is $num"

num=$(($num+1))

done

補充兩個與 loop 有關的命令:

*  break

* continue

這兩個命令常用在複合式迴圈裡,也就是在 do ... done 之間又有更進一層的 loop ,

當然,用在單一迴圈中也未嘗不可啦...  ^_^

break 是用來打斷迴圈,也就是"強迫結束" 迴圈。

若 break 後面指定乙個數值 n 的話,則"從裡向外"打斷第 n 個迴圈,

預設值為 break 1 ,也就是打斷當前的迴圈。

在使用 break 時需要注意的是, 它與 return 及 exit 是不同的:

* break 是結束 loop

* return 是結束 function

* exit 是結束 script/shell

若你理解不來的話,那你可簡單的看成:在 continue 到 done 之間的句子略過而返回迴圈頂端...

與 break 相同的是:continue 後面也可指定乙個數值 n ,以決定繼續哪一層(從裡向外計算)的迴圈,

預設值為 continue 1 ,也就是繼續當前的迴圈。

python佔位符與for,while迴圈簡介

s or d or f format a,b or format b,a f 佔位符 name 渣渣輝 age 50print s代言了貪玩藍月,他今年 d歲了 name,age print 古天樂身價 2f億 10.2367 保留2位小數 format 格式化字串 print 代言了貪玩藍月,他今...

shell中的until迴圈

unti 迴圈和 while 迴圈恰好相反,當判斷條件不成立時才進行迴圈,一旦判斷條件成立,就終止迴圈 until 的使用場景很少,一般使用 while 即可 shell until 迴圈的用法如下 until condition do statements donecondition表示判斷條件,...

shell中的until迴圈

until迴圈和while迴圈恰好相反 當判斷條件不成立時才進行迴圈,一旦判斷條件成立,就終止迴圈 格式 until condition do statements done 注意 在until迴圈體中必須有相應的語句使得condition越來越趨近於 成立 只有這樣才能最終退出迴圈,否則until...