+ -
当前位置:首页 → 问答吧 → 请教:程序中如何接收键盘输入?

请教:程序中如何接收键盘输入?

时间:2011-03-31

来源:互联网

现有一文件 file ,为程序产生,如

张三
李四
王五
赵六
……


我想对它进行逐行显示,并通过键盘接收一些信息,重新写到一文件中,但却无法实现键盘输入,请问是何因?该如何实现?
我的程序是:

cat file |while read rcd
do
echo -n "input  $rcd  number:"; read str
echo $rcd $str >>filenew
done

程序错在哪里?如何实现?

作者: 01z   发布时间: 2011-03-31

用for循环呢?

作者: 昭襄王   发布时间: 2011-03-31

用bash -x调试一下吧,看看问题出在哪儿

作者: where27   发布时间: 2011-03-31

请教如何实现?

作者: 01z   发布时间: 2011-03-31

本帖最后由 lkk2003rty 于 2011-03-31 10:25 编辑

回复 01z


   用awk
  1. awk '{print "input  "$0"  number:";getline input<"-";print "input "input;}' file
复制代码

作者: lkk2003rty   发布时间: 2011-03-31

回复 01z


  用for语句可以
for rcd in `cat file`
do
echo -n "input  $rcd  number:"; read str
echo $rcd $str >>filenew
done

作者: where27   发布时间: 2011-03-31

调试结果:
+ read rcd
+ echo '张三 input str:'
张三 input str:
+ read str
+ echo $'\325\305\...', $'\...\...'
+ read rcd
……

其中第五行显示的第二串的内容并非键盘接收的内容。

作者: 01z   发布时间: 2011-03-31

read str </dev/tty

作者: waker   发布时间: 2011-03-31

本帖最后由 01z 于 2011-03-31 10:49 编辑

谢谢各位指点!
明白了一点:在while循环中还要加上"</dev/tty"

作者: 01z   发布时间: 2011-03-31