免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2485 | 回复: 4

bash read能不能用readline [复制链接]

论坛徽章:
2
天蝎座
日期:2014-03-28 10:18:052015年亚洲杯之乌兹别克斯坦
日期:2015-02-10 11:32:25
发表于 2012-02-17 20:24 |显示全部楼层
写了个交互脚本,输入是个大问题


read xxoo


输入时退格,方向键神马的都不行了

找了半天,发现

stty erase "^H"

可以让退格真的退格


那么方向键呢(至少左右得正常吧)

我估摸着要用readline

当然也可能彻底搞错了,我的要求从小到大逐渐是:

1. 左右方向键有用,上下方向键屏蔽

2. 上下方向键有用(history?)

3. tab有用(readline??)


能解决第一个就够了,当然后面两个能搞定更好


谢谢各位大牛

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2012-02-17 21:11 |显示全部楼层
不能用退格 stty cooked试试
关于readline的问题不了解

论坛徽章:
1
巳蛇
日期:2013-10-28 15:55:33
发表于 2012-02-17 22:47 |显示全部楼层
本帖最后由 惟吾无为 于 2012-02-17 22:50 编辑

read -e  使用readline读取输入, 会处理\转义.

或者设置 stty erase ^? 就可以使用退格键了. (先前没注意到你的是^H, 我的是^?, 这个地方就是一个字符而已. 好像对^开头的特殊处理)

至于屏蔽某一键, 完全可以对read到的结果过滤.

论坛徽章:
2
天蝎座
日期:2014-03-28 10:18:052015年亚洲杯之乌兹别克斯坦
日期:2015-02-10 11:32:25
发表于 2012-02-20 09:10 |显示全部楼层
惟吾无为 发表于 2012-02-17 22:47
read -e  使用readline读取输入, 会处理\转义.

或者设置 stty erase ^? 就可以使用退格键了. (先前没注意 ...



确实如此,看man的时候竟然没注意到这个选项


多谢多谢

论坛徽章:
0
发表于 2012-03-13 23:34 |显示全部楼层
本帖最后由 sendltd 于 2012-03-13 23:41 编辑
  1. #!/bin/bash
  2. echo -n "please input your name: "
  3. read -e NAME
  4. echo "hello, $NAME"
复制代码
按退格键会将please input ...都删除。
还是用rlwrap吧。
--------------------------------------
纠正下,下面用法没有问题:
  1. #!/bin/bash
  2. read -e -p "please input your name: " NAME
  3. echo "hello, $NAME"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP