AWK 條件語(yǔ)句與循環(huán)
條件語(yǔ)句
IF 語(yǔ)句
IF 條件語(yǔ)句語(yǔ)法格式如下:
if (condition)
action
也可以使用花括號(hào)來(lái)執(zhí)行一組操作:
if (condition){
action-1
action-1
.
.
action-n}
以下實(shí)例用來(lái)判斷數(shù)字是奇數(shù)還是偶數(shù):
$ awk 'BEGIN {num = 10; if (num % 2 == 0) printf "%d 是偶數(shù)\n", num }'
輸出結(jié)果為:
10 是偶數(shù)
IF - ELSE 語(yǔ)句
IF - ELSE 條件語(yǔ)句語(yǔ)法格式如下:
if (condition)
action-1else
action-2
在條件語(yǔ)句 condition 為 true 時(shí)只需 action-1,否則執(zhí)行 action-2。
$ awk 'BEGIN {
num = 11;
if (num % 2 == 0) printf "%d 是偶數(shù)\n", num;
else printf "%d 是奇數(shù)\n", num
}'
輸出結(jié)果為:
11 是奇數(shù)
IF - ELSE - IF
我們可以創(chuàng)建多個(gè) IF - ELSE 格式的判斷語(yǔ)句來(lái)實(shí)現(xiàn)多個(gè)條件的判斷:
$ awk 'BEGIN {
a=30;
if (a==10)
print "a = 10";
else if (a == 20)
print "a = 20";
else if (a == 30)
print "a = 30";
}'
輸出結(jié)果為:
a = 30
循環(huán)
For
For 循環(huán)的語(yǔ)法如下:
for (initialisation; condition; increment/decrement)
action
for 語(yǔ)句首先執(zhí)行初始化動(dòng)作( initialisation ),然后再檢查條件( condition )。如果條件為真,則執(zhí)行動(dòng)作( action ),然后執(zhí)行遞增( increment )或者遞減( decrement )操作。只要條件為 true 循環(huán)就會(huì)一直執(zhí)行。每次循環(huán)結(jié)束都會(huì)進(jìn)條件檢查,若條件為 false 則結(jié)束循環(huán)。
下面的例子使用 For 循環(huán)輸出數(shù)字 1 至 5:
$ awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'
輸出結(jié)果為:
12345
While
While 循環(huán)的語(yǔ)法如下:
while (condition)
action
While 循環(huán)首先檢查條件 condition 是否為 true ,若條件為 true 則執(zhí)行動(dòng)作 action。此過(guò)程一直重復(fù)直到條件 condition 為 flase 才停止。
下面是使用 While 循環(huán)輸出數(shù)字 1 到 5 的例子:
$ awk 'BEGIN {i = 1; while (i < 6) { print i; ++i } }'
輸出結(jié)果為:
12345
Break
break 用以結(jié)束循環(huán):
在下面的示例子中,當(dāng)計(jì)算的和大于 50 的時(shí)候使用 break 結(jié)束循環(huán):
$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) break; else print "Sum =", sum
}
}'
輸出結(jié)果為:
Sum = 0Sum = 1Sum = 3Sum = 6Sum = 10Sum = 15Sum = 21Sum = 28Sum = 36Sum = 45
Continue
Continue 語(yǔ)句用于在循環(huán)體內(nèi)部結(jié)束本次循環(huán),從而直接進(jìn)入下一次循環(huán)迭代。
下面的例子輸出 1 到 20 之間的偶數(shù):
$ awk 'BEGIN {for (i = 1; i <= 20; ++i) {if (i % 2 == 0) print i ; else continue} }'
輸出結(jié)果為:
2468101214161820
Exit
Exit 用于結(jié)束腳本程序的執(zhí)行。
該函數(shù)接受一個(gè)整數(shù)作為參數(shù)表示 AWK 進(jìn)程結(jié)束狀態(tài)。 如果沒(méi)有提供該參數(shù),其默認(rèn)狀態(tài)為 0。
下面例子中當(dāng)和大于 50 時(shí)結(jié)束 AWK 程序。
$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) exit(10); else print "Sum =", sum
}
}'
輸出結(jié)果為:
Sum = 0Sum = 1Sum = 3Sum = 6Sum = 10Sum = 15Sum = 21Sum = 28Sum = 36Sum = 45
讓我們檢查一下腳本執(zhí)行后的返回狀態(tài):
$ echo $?
執(zhí)行上面的命令可以得到如下的結(jié)果:
19