2011-02-10 44 views
1

我有一個shell腳本 -如何逐行閱讀並從鍵盤獲取輸入?

while read -r line; 
do 
echo $line 
done < file.txt 

這是工作正常,但我需要從文件中讀取每一行後提示用戶進行輸入。 我試着添加「閱讀」,但這是行不通的。

while read -r line; 
do 
echo $line 
#prompt user here 
read input_user 
done < file.txt 

有什麼想法?我也願意使用awk。

+0

感謝guys..your答案工作正常..現在我很困惑哪一個選擇(滴答)答案:D .. – 2011-02-10 05:41:22

回答

3

對循環的read使用不同的FD。

while read -u 4 -r line 
do 
    echo $line 
    #prompt user here 
    read input_user 
done 4< file.txt 
3

可以使用-u選項read指定的文件句柄:

while read -u 9 -r line; do 
    echo $line 
    read -p 'Press ENTER ' input_user 
done 9<file.txt 

-u 99<file.txt結合意味着,在while循環讀取和「常規」 read報表還是來了來自標準輸入。

您通常可以選擇任何文件句柄尚未使用 - 0,12分別是標準輸入,輸出和錯誤。我傾向於從9開始,根據需要一路下調,具體取決於我需要一次訪問多少個文件句柄。

樣品成績單:

pax$ ./qq.sh 
line 1 
Press ENTER <ENTER pressed> 
line 2 
Press ENTER <ENTER pressed> 
line 3 
Press ENTER <ENTER pressed> 
line 4 
Press ENTER <ENTER pressed> 
pax$ _ 
1

如果你真的是鍵盤

while read -r line; do 
    echo $line 
    #prompt user here 
    read input_user </dev/tty 
done <file.txt 

將從連接終端讀取無論任何改向。