鍍金池/ 教程/ Linux/ 循環(huán)  
循環(huán)  
操作符  
優(yōu)雅地輸出
用戶自定義函數(shù)
正則表達(dá)式
基本示例
內(nèi)置函數(shù)
工作流程
概述
控制流  
數(shù)組  
輸出重定向
基本語法
運(yùn)行環(huán)境
內(nèi)置變量

循環(huán)  

除了前面介紹的條件語句,AWK 還提供了循環(huán)語句。該語句的作用就是當(dāng)條件為真時重復(fù)執(zhí)行一系列的命令。本章將講解 AWK 中循環(huán)語句的使用方法。

For

For 循環(huán)的語法如下:

for (initialisation; condition; increment/decrement)
    action

for 語句首先執(zhí)行初始化動作( initialisation ),然后再檢查條件( condition )。如果條件為真,則執(zhí)行動作( action ),然后執(zhí)行遞增( increment )或者遞減( decrement )操作。只要條件為真循環(huán)就會一直執(zhí)行。每次循環(huán)結(jié)束都會進(jìn)條件檢查,若條件為假則結(jié)束 循環(huán)。下面的例子使用 For 循環(huán)輸出數(shù)字 1 至 5:

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

執(zhí)行上面的命令可以得到如下結(jié)果:

1
2
3
4
5

While

While 循環(huán)會一直執(zhí)行動作直到邏輯條件為假為止。其使用方法如下:

while (condition)
    action

AWK 首先檢查條件是否為真,若條件為真則執(zhí)行動作。此過程一直重復(fù)直到條件為假時,則停止。下面是使用 While 循環(huán)輸出數(shù)字 1 到 5 的例子:

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

執(zhí)行上面的命令可以得到如下的結(jié)果:

1
2
3
4
5

Do-While

Do-While 循環(huán)與 While 循環(huán)相似,但是 Do-While 的條件測試放到了循環(huán)的尾部。下面是 do-while 的語法:

do
    action
while (condition)

在 do-while 循環(huán)中,無論條件是真是假,循環(huán)語句至少執(zhí)行一次,執(zhí)行后檢查條件真假。下面是使用 do-While 循環(huán)輸出數(shù)字 1 到 5 的例子:

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

執(zhí)行上面的命令可以得到如下的結(jié)果:

1
2
3
4
5

Break

顧名思義,break 用以結(jié)束循環(huán)過程。在下面的示例子中,當(dāng)計(jì)算的和大于 50 的時候使用 break 結(jié)束循環(huán)過程:

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

執(zhí)行上面的命令可以得到如下的結(jié)果:

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

Continue

Continue 語句用于在循環(huán)體內(nèi)部結(jié)束本次循環(huán),從而直接進(jìn)入下一次循環(huán)迭代。當(dāng)我們希望跳過循環(huán)中某處數(shù)據(jù)處理時就會用到 Continue。下面的例子輸出 1 到 20 之間的偶數(shù):

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

執(zhí)行上面的命令可以得到如下的結(jié)果:

2
4
6
8
10
12
14
16
18
20

Exit

Exit 用于結(jié)束腳本程序的執(zhí)行。該函數(shù)接受一個整數(shù)作為參數(shù)表示 AWK 進(jìn)程結(jié)束狀態(tài)。 如果沒有提供該參數(shù),其默認(rèn)狀態(tài)為 0 。下面例子中當(dāng)和大于 50 時結(jié)束 AWK 程序。

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

執(zhí)行上面的命令可以得到如下的結(jié)果:

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

讓我們檢查一下腳本執(zhí)行后的返回狀態(tài):

[jerry]$ echo $?

執(zhí)行上面的命令可以得到如下的結(jié)果:

19
上一篇:操作符  下一篇:工作流程