BEGIN {
printf "Enter your name"
getline < "-"
}
上圖:爲什麼不只是getline
而不是getline < "-"
? "-"
是什麼意思?在awk中,getline是什麼意思<「 - 」
BEGIN {
printf "Enter your name"
getline < "-"
}
上圖:爲什麼不只是getline
而不是getline < "-"
? "-"
是什麼意思?在awk中,getline是什麼意思<「 - 」
-
表示標準輸入等終端。沒有這一點,如果在命令行中指定了一個文件,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
正如你可以看到,這一次讀到我在終端上輸入而忽略了文件的名稱。
我試過了,就像你說的,謝謝 – kingslayer
該片段是awk程序的一部分。 Awk不是殼。
getline < "-"
從標準輸入中讀取一行。
getline
讀取來自awk
命令行或標準輸入中指定的第一文件中的一行,如果沒有命令行參數。
因此,如果您不在awk
命令行中指定文件,但它們將執行相同的操作,但如果您確實指定文件,getline < "-"
仍會從stdin讀取。
明白,謝謝 – kingslayer
這個問題是完全不可讀的。我不知道你在問什麼 – KeithC
問題在哪裏? – Gammer