流程控制
笔者常说“写好if-else,走遍天下都不怕!”,这里的if-else
就是流程控制语句的代表,而流程控制语句可以说是程序界的小无相功,用的好的话换任何语言上都能轻松实现目标功能。
if-else
BEGIN{ } { i = 1000; if ( i < 0 || i > 99999 ) { print("i not right."); } else if ( i > =0 && i < 100 ) { print("i is min."); } else { print("i is big."); } } END{ }
$echo ""| awk -f chapter_2_4-1.awk
i is big.
以上演示了一个if-else
语句的基本用法,与c的使用方式完全相同,不再赘述。
for循环
BEGIN{ } { for(i=0; i< 3; ++i) { print("step: "i); } } END{ }
$echo ""| awk -f chapter_2_4-2.awk
step: 0
step: 1
step: 2
与c语言中并没有什么不同。
while循环
BEGIN{ } { i = 0; while(i< 3) { print("step: "i); ++i; } } END{ }
$echo ""| awk -f chapter_2_4-3.awk
step: 0
step: 1
step: 2
每一个for循环都可以用一个while结构来进行改写,类似的还有do-while
。
switch-case
BEGIN{ } { i = 0; switch(i) { case 0: print("0"); break; case 1: print("1"); break; default: print("unknow"); } } END{ }
$echo ""| awk -f chapter_2_4-4.awk
0
依然跟c语言中无差别。
循环控制语句
- continue 跳过当前循环后面的逻辑,直接进入下一循环;
- break 跳出当前循环;
- next 跳过当前记录的处理,直接处理下一记录;
- return 函数返回;
- exit 程序退出。