不使用循环构造进行Awk迭代
我正在阅读一篇关于不使用循环构造进行Awk迭代,awk,Awk,我正在阅读一篇关于awk脚本的教程,并观察到这种奇怪的行为,为什么这个awk脚本在执行时会重复地询问一个数字,即使没有像while或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 {
awk
脚本的教程,并观察到这种奇怪的行为,为什么这个awk脚本在执行时会重复地询问一个数字,即使没有像while
或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脚本的这种行为尝试此操作,然后输入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"
}
来自著名的:
如果您没有在命令行上为awk脚本提供输入文件,awk会将程序应用于您接下来在终端上键入的任何内容,直到您键入文件结束信号(Unix系统上的control-d)。
awk
继续在行上工作,直到到达文件结束。由于在这种情况下,输入(STDIN)永远不会随着您不断输入数字或按enter键而结束,因此会导致无休止的循环
当您点击CTRL+D时,您指示awk
脚本,该脚本通过退出循环到达EOF