getline
getline函數獲得下一行可能的返回值爲:
1 若是可以讀取一行。
0 若是到了文件末尾。
-1 若是遇到錯誤。
從文件中讀取
getline函數除了能讀取正常的輸入流外,還能夠從文件或管道中讀取。
while((getline<"filepath")>0)
print
將輸入賦給一個變量
讀取下一行並賦值給變量input:
getline input
從管道讀取輸入
執行一個命令並將結果用管道輸送到getline。
"who am i"|getline
當一個命令的輸出結果被用管道輸送給getline且包含多個行時,必須建立一個循環來執行getline。
while("who"|getline)
who_out[++i]=$0bash
獲取用戶標準輸入函數
1.getline<"-"spa
2.getline<"/dev/tty"get
例子:input
awk 'BEGIN{printf "Enter your name:";getline<"-";print}'
三個$1
#!/bin/bash
filename:awk_whoami.sh
awk '
BEGIN{"who am i"|getline
name=$1
FS=":"
}
name ~ $1{print $5}
' $1
第一個$1:getline讀取下一行將其賦給$0,故$1指新輸入行的$1。
第二個$1:指第三個$1中的且與name匹配的某一行的$1。
第三個$1:指腳本後的參數,如./awk_whoami.sh /etc/passwd,故此$1指/etc/passwd。
awk