我有像 -
这样的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 :(得分:3)
为循环的read
使用不同的FD。
while read -u 4 -r line
do
echo $line
#prompt user here
read input_user
done 4< file.txt
答案 1 :(得分:3)
您可以使用指定文件句柄的-u
read
选项:
while read -u 9 -r line; do
echo $line
read -p 'Press ENTER ' input_user
done 9<file.txt
-u 9
与9<file.txt
相结合意味着while
循环和“常规”read
语句中的读取仍然来自标准输入。
您通常可以选择尚未使用的任何文件句柄 - 0
,1
和2
分别是标准输入,输出和错误。我倾向于从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$ _
答案 2 :(得分:1)
如果您的意思是键盘,
while read -r line; do
echo $line
#prompt user here
read input_user </dev/tty
done <file.txt
无论是否有任何重定向,都将从连接的终端读取。