BEGIN {
printf "Enter your name"
getline < "-"
}
上图:为什么不只是getline
而不是getline < "-"
? "-"
是什么意思?
答案 0 :(得分:2)
-
表示标准输入,例如终端。如果没有,如果在命令行上指定了文件,awk将从该文件中读取。
首先,让我们假设有一个文件:
$ cat file
Tom
现在,让我们运行您的代码而不使用<"-"
:
$ awk 'BEGIN { printf "Enter your name: "; getline; print "Name=" $0 }' file
Enter your name: Name=Tom
如您所见,它从文件file
中读取名称。
假设我们希望用户在终端输入名称。在这种情况下,我们希望从终端获取一行,表示为-
,而不是从文件中获取。因此,我们使用:
$ awk 'BEGIN { printf "Enter your name: "; getline <"-"; print "Name=" $0 }' file
Enter your name: John
Name=John
如您所见,这个读取了我在终端输入的名称并忽略了该文件。
答案 1 :(得分:2)
该片段是awk程序的一部分。 Awk不是贝壳。
getline < "-"
从标准输入读取一行。
getline
从awk
命令行中指定的第一个文件读取一行,如果没有命令行参数,则读取标准输入。
如果你没有在awk
命令行上指定文件,他们会做同样的事情,但如果你确实指定了一个文件,getline < "-"
仍将从stdin中读取。