【发布时间】:2011-10-31 22:38:03
【问题描述】:
我们有一个 ksh 脚本,它正在从一个“while read line”中读取,输入通过管道传输到其中。同时,我们正在使用“read
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。
【问题讨论】:
-
什么操作系统以及你从
echo ${.sh.version}得到什么。祝你好运。 -
echo ${.sh.version} 给出:版本 M 1993-12-28 q
-
使用 RHEL 运行 linux 内核 2.6.9-55.9.vm2.ELsmp
-
“x=dostuff $line”是问题中的错字,是我不熟悉的一些 ksh 语法,还是您真的在执行 $line 时将 x 设置为 'dostuff'?
-
这是问题中的错字 - 抱歉!真正的问题在于“read y