如何逐行循环.txt文件并等待键盘按下继续读取下一行?



以下是我写的当前shell命令。运行时,它会打印第一行。然后它read下一行的第一个字母,并继续避免我期望的暂停,直到按下键盘键。如何避免这种情况?

while read p; do
echo "SEARCHING : $p ..."
read -p "Press any key to continue... " -n1 -s
echo -n "0047 SER 127.0.1.1 57000 "$p" 3" | nc -u 127.0.1.1 57000
done <Queries

查询文件内容

Twilight
Jack
American Idol
Happy Feet
Twilight saga
Happy Feet
Happy Feet
Feet
....
....

外壳脚本的输出

SEARCHING : Twilight ...
SEARCHING : ack ...
SEARCHING : merican Idol ...
SEARCHING : appy Feet ...
SEARCHING : wilight saga ...
....
....

问题是 while 循环的主体继承了 while 的 stdin,使得内部read从查询文件中读取一行,快速解决方法是从 tty 指定输入:

while IFS= read -r p; do
echo "SEARCHING : $p ..."
read -p "Press any key to continue... " -n1 -s < /dev/tty
echo -n "0047 SER 127.0.1.1 57000 "$p" 3" | nc -u 127.0.1.1 57000
done <Queries

最新更新