流程控制
笔者常说“写好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 程序退出。