- For Loop
- While Loop
- Until Loop
< for loop>
a. 清單式
for Variable in List ; do
...
doneexample:
for myFiles in test*
echo $myFiles
done優點:處理檔案、資料,或是在某資料夾中沒有命名規則的檔案
缺點:若需要處理有index 的時候,可以使用其他迴圈寫法較為方便,否則就需要於建立清單時將此index寫入,如:
bgn=0; int=1; end=10;
for i in ${ seq $bgn $int $end }; do
...
done
b. 雙括號式
for (( 初始值; 迴圈結束判斷; 步進值 )); do
...
done
example:
bgn=0; end=10
for (( i = bgn ; i <= end; i ++ ))
...
done
雙括號式的變數為迴圈index,故利於處理具有index的檔案,或是單純的迴圈計算。
i++ 也可以寫成++ i,若要改變步進值,可以直接寫成i+=n
c. 大括號式
for Variable in { 初始值..終止值..步進值}; do
...
done若只是單純處理某區間的迴圈,如1~10,這種寫法和b.差不多;但若要進行一些終止邏輯判斷,此寫法不適合。
example:
bgn=0; end=10
for i in {bgn..end}; do
...
doneNote:在某些版本(或機器?)上,無法指定步進值,只能令步進值為1,若指定的步進值不為1 則會出錯。 => 原因尚不明,近期也不會深究。
<While Loop>
While [ condition ]; do
...
done當condition 為真,便執行迴圈。如;
i = 1
whle [ $i -lt 10 ]; do
...
i= expr ` $i + 1
done
也可以不使用條件判斷,而是在迴圈內部控制:
while : ; do
...
done
While 指令也可以用來讀取資料,一次讀取一行:
read fileName
while read line; do
echo " $line"
done
<Until Loop>
Until [ condition ]; do
...
doneUntil loop 一般比較少用到,因為它的概念其實和while 迴圈類似:
while 是[ condition]成立會執行迴圈;
until則是[condition]不成立,才會執行迴圈。
或是換句話說:
當while的條件為真,迴圈執行;
當Until 的條件為真,迴圈馬上停止。
<Continue、break>
不論是哪一種迴圈,這兩個指令都適用。
只要在迴圈中遇到continue指令,就會立刻回到迴圈的開頭,重複執行;
若是遇到break指令,就會立刻離開迴圈。
沒有留言:
張貼留言