AWK迴圈


像條件語句,AWK還提供了回圈語句。它被用來執行設定在重複的方式動作。迴圈繼續執行,只要迴圈條件為true。本教學介紹AWK迴圈使用合適的例子。

For 迴圈

下面是for迴圈的語法:

for (initialisation; condition; increment/decrement)
    action

初始的語句執行初始化動作,然後它檢查的條件;如果條件為真,那麼它執行操作,在這之後它執行遞增或遞減操作。迴圈繼續執行,只要條件為真。比如下面的例子使用迴圈列印從1到5的數:

[jerry]$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'

在執行上面的程式碼後,得到以下結果:

1
2
3
4
5

While 迴圈

While迴圈一直執行的動作,直到一個特定的邏輯條件計算為真。下面給出的是while迴圈的語法:

while (condition)
    action

AWK首先檢查條件,如果條件為真,那麼就執行操作,這個過程不斷重複,只要迴圈條件計算為true。比如下面的例子使用while迴圈列印1到5個數位:

[jerry]$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'

在執行上面的程式碼後,得到以下結果:

1
2
3
4
5

Do-While 迴圈

do-while迴圈類似於while迴圈,不同之處在於測試條件是在迴圈結束時進行計算。下面給出的是do while迴圈的語法:

do
    action
while (condition)

在do-while迴圈操作語句被執行至少一次,即使在條件語句的計算結果為假。例如範例下面使用do-while迴圈列印1到5的數位:

[jerry]$ awk 'BEGIN {i = 1; do { print i; ++i } while (i < 6) }'

在執行上面的程式碼後,得到以下結果:

1
2
3
4
5

Break 語句

如其名稱提示,它用於結束回圈的執行。這裡用於結束回圈,當sum大於50的例子。

[jerry]$ awk 'BEGIN {sum = 0; for (i = 0; i < 20; ++i) { sum += i; if (sum > 50) break; else print "Sum =", sum } }'

在執行上面的程式碼後,得到以下結果:

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

Continue 語句

Continue語句用於迴圈內跳到回圈的下一次疊代。當我們想跳過迴圈裡面的一些資料的處理是非常有用的。比如下面的例子使用continue語句,列印1-20的偶數。

[jerry]$ awk 'BEGIN {for (i = 1; i <= 20; ++i) {if (i % 2 == 0) print i ; else continue} }'

在執行上面的程式碼後,得到以下結果:

2
4
6
8
10
12
14
16
18
20

Exit 語句

它是用來停止指令碼的執行。它接受一個整數作為引數,這將是AWK進程的退出狀態程式碼。如果沒有提供任何引數,退出返回狀態為零。這裡是其中停止執行當總和大於50的例子。

[jerry]$ awk 'BEGIN {sum = 0; for (i = 0; i < 20; ++i) { sum += i; if (sum > 50) exit(10); else print "Sum =", sum } }'

在執行上面的程式碼後,得到以下結果:

Sum = 0
Sum = 1
Sum = 3
Sum = 6
Sum = 10
Sum = 15
Sum = 21
Sum = 28
Sum = 36
Sum = 45

檢查指令碼的返回狀態。

[jerry]$ echo $?

在執行上面的程式碼後,得到以下結果:

10