Linux 如何逐行循环一个.txt文件,并等待键盘按下继续读取下一行?
下面是我编写的当前shell命令。运行时,它会打印第一行。然后它读取下一行的第一个字母,并继续避免我期望的暂停,直到按下键盘键。如何避免这种情况Linux 如何逐行循环一个.txt文件,并等待键盘按下继续读取下一行?,linux,bash,shell,Linux,Bash,Shell,下面是我编写的当前shell命令。运行时,它会打印第一行。然后它读取下一行的第一个字母,并继续避免我期望的暂停,直到按下键盘键。如何避免这种情况 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 &l
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
shell脚本的输出
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,使得内部
读取从查询文件中读取一行,一个快速修复方法是指定来自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
而IFS=read-rp;做
echo“搜索:$p…”
阅读-p“按任意键继续…”-n1-s
echo-n“0047 SER 127.0.1.1 57000\”$p\“3”| nc-u 127.0.1.1 57000
成功了!谢谢!!我从未听说过/dev/tty
。当网络命令(nc-u 127.0.1.1 57000
)传递给正在运行的侦听器时。输入不会移动到下一行。你能帮我吗@andlrcI可以通过将和放在netcat命令的末尾来完成