免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1879 | 回复: 7
打印 上一主题 下一主题

[文本处理] 这个脚本错在哪里啊?(检查键盘输入) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-24 17:33 |只看该作者 |倒序浏览
  1. #!/bin/bash
  2. #检查方向键
  3. #edited by xxt
  4. arrowup='\[A'
  5. arrowdown='\[B'
  6. arrowrt='\[C'
  7. arrowleft='\[D'
  8. insert='\[2'
  9. delete='\[3'

  10. echo -n "Press a key... "
  11. read -n3 key

  12. echo

  13. case $key in
  14.   "$arrowup")
  15.      echo "Up-arrow key is pressed"
  16.      ;;
  17.   "$arrowdown")
  18.      echo "Down-arrow key is pressed"
  19.      ;;
  20.   "$arrowrt")
  21.      echo "Right-arrow key is pressed"
  22.      ;;
  23.   "$arrowleft")
  24.      echo "Left-arrow key is pressed"
  25.      ;;
  26.   "$insert")
  27.      echo "Insert key is pressed"
  28.      ;;
  29.   "$delete")
  30.      echo "Delete key is pressed"
  31.      ;;
  32.   *)
  33.      echo "The args which you input is wrong"
  34.      ;;
  35. esac
  36. exit
复制代码
正确的应该怎么写啊?我感觉是参数比配不对啊?应该怎么该啊?
求~

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
2 [报告]
发表于 2012-09-24 22:15 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
3 [报告]
发表于 2012-09-25 07:49 |只看该作者
回复 2# zooyo
没报错,就是脚本的作用没有实现


   

论坛徽章:
0
4 [报告]
发表于 2012-09-25 07:51 |只看该作者
回复 2# zooyo
不管输入什么都是显示:The args which you input is wrong
就是说检测不到键盘输入


   

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
5 [报告]
发表于 2012-09-25 10:03 |只看该作者
本帖最后由 rdcwayx 于 2012-09-25 12:08 编辑

注意: 1、"^[[A"为ctrl+v后按ESC 键 ,和 [ 和 A;
        2、"^[[B"为ctrl+v后按ESC 键 ,和 [ 和 B;
        3. 其他的类似
        4. 其余脚本不用改。
  1. arrowup='^[[A'
  2. arrowdown='^[[B'
  3. arrowrt='^[[C'
  4. arrowleft='^[[D'
  5. insert='^[[2'
  6. delete='^[[3'
复制代码

论坛徽章:
0
6 [报告]
发表于 2012-09-25 16:26 |只看该作者
回复 5# rdcwayx

还是不行,上下左右的字符编码是对的,我不用case语句,换成以下形式就行了
  1. arrowup='\[A'
  2. arrowdown='\[B'
  3. arrowrt='\[C'
  4. arrowleft='\[D'
  5. # --------------------------------------------

  6. SUCCESS=0
  7. OTHER=65

  8. echo -n "Press a key... "
  9. # 如果不是上边列表所列出的按键,可能还是需要按回车.(译者:因为一般按键是一个字符)
  10. read -n3 key # 读3 个字符.

  11. echo -n "$key" | grep "$arrowup" #检查输入字符是否匹配.
  12. if [ "$?" -eq $SUCCESS ]
  13. then
  14. echo "Up-arrow key pressed."
  15. exit $SUCCESS
  16. fi

  17. echo -n "$key" | grep "$arrowdown"
  18. if [ "$?" -eq $SUCCESS ]
  19. then
  20. echo "Down-arrow key pressed."
  21. exit $SUCCESS
  22. fi

  23. echo -n "$key" | grep "$arrowrt"
  24. if [ "$?" -eq $SUCCESS ]
  25. then
  26. echo "Right-arrow key pressed."
  27. exit $SUCCESS
  28. fi

  29. echo -n "$key" | grep "$arrowleft"
  30. if [ "$?" -eq $SUCCESS ]
  31. then
  32. echo "Left-arrow key pressed."
  33. exit $SUCCESS
  34. fi
复制代码

论坛徽章:
0
7 [报告]
发表于 2012-09-25 16:46 |只看该作者
我明白了,$key和这些键盘的字符编码并不相等,只是$key包含这些字符编码

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
8 [报告]
发表于 2012-09-26 08:28 |只看该作者
明白就好, 可能源代码是从某个网站复制的, ^[ 是个特殊字符,你当 ^ 和 [ 两个字符输入了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP