Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何逐行循环一个.txt文件,并等待键盘按下继续读取下一行?_Linux_Bash_Shell - Fatal编程技术网

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

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

下面是我编写的当前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 <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命令的末尾来完成