免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 鸟人
打印 上一主题 下一主题

紧急求救:如何在SHELL程序中实现‘按任意键继续’  关闭 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-02-28 23:05 |只看该作者

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

请红袖添香老兄作一下解释,谢谢了!!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
}

论坛徽章:
0
12 [报告]
发表于 2003-02-28 23:35 |只看该作者

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

...

也没什么可多说的,

dd if=/dev/tty bs=1 count=1 2> /dev/null

if 是源 设备/文件,这里表示从标准终端读入,
block size为 1,数目也为 1,所以就取到了一个字符

这之前的和之后的一些 stty 语句主要是两个目的,
1、终端上不要 echo
2、保护现场,即做完dd后,即恢复原来的终端设置

论坛徽章:
0
13 [报告]
发表于 2003-03-03 10:05 |只看该作者

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

红袖兄:关于“输入1或2(不用敲回车)就可以运行的话”那段代码,为什么敲回车,也回退出程序,有办法克服吗?
还有就是stty的用法,哪里有文档可学习,请指教!

论坛徽章:
0
14 [报告]
发表于 2003-03-03 11:17 |只看该作者

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

红袖姐你好啊!
我试了你上面的程序,可总提示“Syntax error at line 17: 'echo' unexpected",我敢保证绝对和你写的一模一样的!
我把下面这两行去掉就ok了!
[0-9]) echo "this is digit $c";;
[a-zA-Z]) echo "this is aphabet $c";;

运行结果press any key or RETRUN to quit:
我按了^M后,变成press any key or RETRUN to quit:#,能不能让命令提示符出现在下面啊???

论坛徽章:
0
15 [报告]
发表于 2003-03-03 19:54 |只看该作者

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

我姐不告诉我了!
谁能告诉我这个是什么原因么??!谢谢!

论坛徽章:
0
16 [报告]
发表于 2003-03-03 20:01 |只看该作者

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

原帖由 "nmgzw" 发表:
我姐不告诉我了!
谁能告诉我这个是什么原因么??!谢谢!

原因为你是用 copy & paste 的,这个 ^M 拷过去是没用的。你必须自己用 CTRL-V-M 输入。

论坛徽章:
0
17 [报告]
发表于 2003-03-03 20:18 |只看该作者

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

原帖由 "红袖添香" 发表:

原因为你是用 copy & paste 的,这个 ^M 拷过去是没用的。你必须自己用 CTRL-V-M 输入。

不是的,我是自己打进去的;
原帖由 "nmgzw" 发表:

红袖姐你好啊!
我试了你上面的程序,可总提示“Syntax error at line 17: 'echo' unexpected",我敢保证绝对和你写的一模一样的!
我把下面这两行去掉就ok了!
[0-9]) echo "this is digit $c";;
[a-zA-Z]) echo "this is aphabet $c";;

运行结果press any key or RETRUN to quit:
我按了^M后正常退出,但命令提示符没出现在下一行,而是变成press any key or RETRUN to quit:#,能不能让命令提示符在退出后出现在下一行啊???

论坛徽章:
0
18 [报告]
发表于 2003-03-03 20:26 |只看该作者

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

...


噢,那有可能各系统有点不一样,我是在Solaris和IRIX下试的。

你把这句改成这样试试。用引号引起来

  '^M') exit;;

论坛徽章:
0
19 [报告]
发表于 2003-03-03 20:31 |只看该作者

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

...


倒,我看错了,是这两行的问题,

[0-9]) echo "this is digit $c";;
[a-zA-Z]) echo "this is aphabet $c";;

完了,你的shell不支持 regex?那岂不是要写成

  1|2|3|4|5|6|7|8|9|0) echo "this is digit $c";;
  a|b|c...我不往下写了,你自己补充吧,哈哈) echo "this is aphabet $c";;

我不太相信,这怎么可能,看一下你的帮助,说不定提到你的shell中用什么形式的regex

论坛徽章:
0
20 [报告]
发表于 2003-03-04 10:00 |只看该作者

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

呜~,红袖偏心,不回答偶的问题
是不是偶的嘴不够甜,下次偶吃了糖再来
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP