bash中read -e按下退格键会删除同行printf前置文本的问题求助
解决
read -e退格删除提示符的问题 我之前也踩过这个坑!你遇到的问题是因为read -e启用了Readline编辑功能,但当你用printf单独输出提示符再调用read -e时,Readline会把前面的input:当成当前输入行的一部分,所以退格到最后时就会把提示符也删掉。而普通read没用到Readline,或者没输入内容时,系统只是简单处理输入,不会把提示符纳入编辑范围,所以就正常。
快速修复方案
别用printf单独输出提示符,改用read的-p参数直接指定提示符,这样Readline能正确区分提示符和你的输入内容:
read -e -p "input: "
用这个命令的话,不管你怎么退格,都只会删除你输入的内容,input:提示符会一直保留。
原理说明
- 当你分开用
printf和read -e时,Readline接收的是包含提示符的整行内容,它不知道input:是你预先输出的,会把它当作输入的一部分来编辑。 - 而
read -p参数是Readline原生支持的提示符指定方式,它会把提示符和输入内容做区分,编辑操作只会作用于你输入的部分,不会碰提示符。
内容的提问来源于stack exchange,提问作者glarry
相关产品推荐
相关产品推荐

