我们有一个ksh脚本,它正在读取一个'while read line',输入管道输入。同时我们用'read<读取用户确认输入/ dev / tty',类似于以下草图:
cat interestingdata | while read line ; do
x=$(dostuff $line)
if [[ x -ne 0 ]] ; then
read y < /dev/tty
$(domorestuff $y)
fi
echo "done optional stuff"
done
所有这些都适用于处理'interestingdata'的行,以及来自/ dev / tty的大多数读取。但是,在while循环的前两次迭代中,将忽略第一个字符串+换行符。
通过这个,我的意思是用户输入内容并按下回车键,脚本不会进展到“完成可选的东西”。相反,用户必须键入其他内容并再次按Enter键,然后才能继续执行脚本。
这只发生在while循环的前两次迭代中,然后一切都完美无缺。我有什么想法可以解决这个问题吗?我不知道我还能在这做什么!
如果有帮助的话,用ksh93运行linux内核2.6.9-55.9.vm2.ELsmp。
答案 0 :(得分:0)
听起来像“dostuff”或“domorestuff”有时会从stdin读取。
尝试将“dostuff”替换为“dostuff&lt; / dev / null”,将“domorestuff”替换为“domorestuff&lt; / dev / null”,并查看行为是否发生变化。