1

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

#!/bin/awk -f
BEGIN {
    print "type a number";
}
{
    print "The square of ", $1, " is ", $1*$1;
    print "type another number";
}
END {
    print "Done"
}

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

4

3 回答 3

2

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

当您按CTRL+D时,您通过退出循环指示awk脚本到达EOF 。

于 2013-07-04T06:46:24.737 回答
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"
}
于 2013-07-04T06:43:19.743 回答
0

来自著名的 AWK 编程语言

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

于 2013-07-04T06:43:51.597 回答