阅 读 文 章

紧急求救:如何在SHELL程序中实现‘按任意键继续’

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(鸟人) | 时间:2007-05-27 | 浏览:人次 ]


我在写一个SHELL程序,可是遇到了一个难题,
在READ接受输入时,必须按回车键才能确认,
而我需要只要按一个键就能得到用户的输入,无须按回车键!有什么好办法呢
请各位大侠不吝赐教! 深感为谢!




 michaelds 回复于:2002-03-19 13:37:04

一个经典的小难题,HERE you are:
把下面这个函数如法应用到你的程序中去吧。
#!/bin/sh

get_char()
{
        SAVEDSTTY=`stty -g`
        stty -echo
        stty raw
        dd if=/dev/tty bs=1 count=1 2> /dev/null
        stty -raw
        stty echo
        stty $SAVEDSTTY
}

echo "Press any key to continue..."
char=`get_char`


 michaelds 回复于:2002-03-19 13:45:05

忘了说了,如果你的机器上不认stty raw那么把函数中两处出现的raw换成cbreak。


 valentine 回复于:2002-03-19 15:55:44

给加到精华里了。


 鸟人 回复于:2002-03-19 16:36:34

非常感谢!

另外还有一个小问题:有没有什么好办法隐藏光标呢?


 sopato 回复于:2002-03-20 09:38:11

大家都不要谦虚了,轮流做不是很好吗?? :)


 txlinux 回复于:2002-03-20 10:55:01

真高兴,在  valentine ,mygod 之后,又涌现出一位有志青年。真有点相见狠晚的感觉。

我相信, michaelds 即便不做斑竹,凭他的热心和能力,也会受到大家的支持和感谢的。



 萝卡 回复于:2003-02-28 21:37:03

如果是
while :
do
case
1)....;
2),....:
0)exit;
done
,输入1或2(不用敲回车)就可以运行的话,有办法吗


 红袖添香 回复于:2003-02-28 22:07:25

...

呵呵,一年前的帖子哦~

做成子程序来调用就好了,试试这个


#!/usr/bin/ksh
get_char()
{
  SAVEDSTTY=`stty -g`
  stty -echo
  stty raw
  dd if=/dev/tty bs=1 count=1 2> /dev/null
  stty -raw
  stty echo
  stty $SAVEDSTTY
}

while :
do
printf "press any key or RETRUN to quit: "
c=`get_char`
case "$c" in
  [0-9]) echo "this is digit $c";;
  [a-zA-Z]) echo "this is aphabet $c";;
  ^M) exit;;
  *) echo "Key undefined! "
esac
done


说明:^M 的输入方法是 CTRL-V-M


 htldm 回复于:2003-02-28 22:16:56

又学了一招.


 bzzyg 回复于:2003-02-28 23:05:41

请红袖添香老兄作一下解释,
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 实现 任意 继续 程序 如何 紧急 回复 echo tiansgx 输入

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.