awk迭代循环结构

时间:2013-07-04 06:31:07

标签: awk

我正在阅读有关awk脚本的教程,并观察到这种奇怪的行为,为什么这个awk脚本在执行时会反复询问一个数字,即使没有像while或{{1}这样的循环结构}。如果我们输入for(EOF),它会停止提示输入另一个号码。

CTRL+D

请解释上述awk脚本的这种行为

3 个答案:

答案 0 :(得分:2)

awk继续在线上工作,直到到达文件末尾。因为在这种情况下,输入( STDIN )永远不会在您继续输入数字或点击输入时结束,它会导致无限循环。

点击 CTRL + D 后,您可以通过退出循环来指示<{1}}脚本已达到 EOF

答案 1 :(得分:0)

尝试此操作并输入0退出

BEGIN {
    print "type a number";
}
{
    if($1==0)
       exit;
    print "The square of ", $1, " is ", $1*$1;
    print "type another number";
}
END {
    print "Done"
}

答案 2 :(得分:0)

来自着名的The AWK Programming Language

如果您没有在命令行上为awk脚本提供输入文件,awk会将程序应用于您在终端上键入的任何内容,直到您输入文件结束信号(在Unix上为control-d)系统)。