流程控制

笔者常说“写好if-else,走遍天下都不怕!”,这里的if-else就是流程控制语句的代表,而流程控制语句可以说是程序界的小无相功,用的好的话换任何语言上都能轻松实现目标功能。

if-else

chapter_2_4-1.awk

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循环

chapter_2_4-2.awk

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循环

chapter_2_4-3.awk

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

chapter_2_4-4.awk

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 程序退出。

results matching ""

    No results matching ""