我知道 (1)我可以用
循环遍历文件的行while read line
do
something
done < file
(2)我可以用
暂停我的程序something
read -p "press any key to continue..." ## pause here waiting for key in
something
然而,暂停技巧在这样的读取循环中不起作用
while read line
do
something
read -p "press any key to continue..." ## suppose to pause here
done < file
那么为什么会这样,以及如何克服它?
答案 0 :(得分:3)
您的读取命令也从stdin(从您的文件中)读取。
使用Linux,您可以使用:
read -p "press any key to continue..." < /dev/tty
答案 1 :(得分:0)
exec 3< words
while read -u 3 word; do
printf 'Got "%s"\n' "$word"
read -p 'Press enter.'
done
首先打开文件描述符3(通常由shell使用),然后将文件words
的内容发送给它。
然后read
从此文件描述符(-u 3
)读取,循环显示结果并等待用户在标准输入上的输入。
循环不起作用的原因是您从文件中重定向两个 read
调用的输入。从循环中的标准输入读取的任何内容都将从文件中获取数据。