【发布时间】:2015-03-02 15:03:36
【问题描述】:
程序:for_loop.awk
{
sum = 0
i = 1
for (i=1; i<=10; i++)
{
sum += i;
}
printf "Sum for 1 to 10 numbers = %d \nGoodbuy!\n\n", sum
exit 1
}
如果我使用 awk -f for_loop.awk 执行上面的代码,它正在等待输入,然后如果我按 ENTER 键,那么只有它显示 printf 语句,否则它正在等待我的响应。
这不会发生在 while/do while 循环中。仅在 for 循环中,它需要从键盘输入 (ENTER),然后才显示输出。
谁能解释为什么会这样? (请原谅我任何拼写或语法错误)
编辑:
与上述问题相关的另一个问题,即
如果我在该程序中删除exit 1,它仍在等待我的输入(Enter Key),如果我这样做,它会在我按下(Enter Key)或直到Ctrl+D(退出)。
没有循环如何无限次运行?表示它是否正在执行exit 1 表示它已超出循环但它如何返回并执行相同的语句。
谢谢
【问题讨论】:
-
您缺少 AWK 的一个基本方面:为每条记录运行正常操作。如果您不提供任何记录,AWK 将不会做任何事情。
-
另一件事 Ctrl+D = EOF(文件结束)
-
回声,райтфолд,以我的编辑为例。
-
@райтфолд 你能解释一下它是如何在没有任何循环的情况下无限次运行的吗
-
有一个循环 - awks 隐式工作循环逐行(默认)读取您的输入,直到 EOF。获取 Arnold Robbins 的《Effective Awk Programming》一书。