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