Perl 和 Rubyexit
实际上退出了:
$ perl -e 'BEGIN {print 1; exit}; END {print 2}'
1
$ ruby -e 'BEGIN {print 1; exit}; END {print 2}'
1
对 awk 来说不是这样:
$ awk 'BEGIN {print 1; exit}; END {print 2}'
1
2
我试图用“help.awk”解决这个问题
function really_exit() {
IM_SURE = 1
exit
}
END {
if (IM_SURE) {
exit
}
}
但这会产生自己的问题。如果“prog.awk”只有开始块:
BEGIN {
print "start"
}
然后运行它:
awk -f help.awk -f prog.awk
将导致它挂起等待输入。是否有更好的解决方案可用于真正退出 Awk 脚本?
如果 awk 程序有一个“中间”或
END
块,则读取输入。我们可以通过提供空输入来解决这个问题:如果我们希望这是默认设置,我们可以在“help.awk”中添加一个块:
然而,这会产生一个重要的变化;除非您添加破折号,否则 awk 不会从终端读取:
或修改“prog.awk”:
示例阅读输入:
不读取输入的示例: