我一直看到这个awk成语,我想知道 究竟是什么意思
while (getline <"FILE" > 0)
我理解getline正在做什么,但我没有重定向到0。
根据The Awk Programming Language,你这样做是为了避免a 在FILE不存在的情况下,无限循环。
为什么重定向会消除该错误?究竟是什么被重定向?它不能是getline的返回值,否则,在评估时是什么表达式?我错过了什么!
谢谢。
编辑:感谢您的评论。我让重定向操作符与关系运算符混淆。如果它是这样编写的话,也许会更清楚
while ((getline <"FILE") > 0)
甚至更清楚
while (0 < (getline <"FILE"))
再次感谢!
答案 0 :(得分:1)
>
符号正在测试getline
的返回值(大于零)。它不是重定向标志。
来自https://www.gnu.org/software/gawk/manual/html_node/Getline.html:
getline命令在找到记录时返回1,如果找到则返回0 遇到文件的结尾。如果获得一个错误 记录,例如无法打开的文件,然后getline返回-1。 在这种情况下,gawk将变量ERRNO设置为描述该变量的字符串 发生错误。
混淆可能来自getline
未使用输出重定向到文件的事实。 (它仅用于读取数据)。因此>
符号不应该含糊不清。 (它不能代表输出重定向)
要将某些内容打印到文件,您可以使用print
或printf
命令中的输出重定向。