前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >shell中read在控制台不能删除内容的解决方式

shell中read在控制台不能删除内容的解决方式

作者头像
六月河
发布2023-06-26 17:02:53
3480
发布2023-06-26 17:02:53
举报
文章被收录于专栏:工具客栈工具客栈

警告

本文最后更新于 2022-10-07,文中内容可能已过时。

问题

因为静态博客创建,上传提交需要进行多个git命令,操作起来比较麻烦,于是沿用主题开发者的shell脚本命令,将多个命令直接通过一个脚本封装,双击一键运行即可,非常方便。

但是,在使用时遇到一个问题:运行上传脚本时,输入commit信息,输错了 backspace 删除键无法全部删除,只删除一个字符,然后就无法删除了。

1 2 3 4 5 6 7 8 9 10

#!/bin/bash cd .. git add . read -p "Please enter commit message: " commitMsg if [ -z $commitMsg ];then   commitMsg="Docs: Kingpo update $(date +'%F %a %T')" fi git commit -m "✏ $commitMsg" git push

网上查了一下,问题应该出在read命令这里。

read命令

Shell中内置read命令,功能是读取从键盘输入的数据。

read命令用法

1

read [-options] [variables]

options表示选项,如下表所示;variables表示用来存储数据的变量,可以有一个,也可以有多个。

Shell read 命令支持的选项

选项

说明

-a array

把读取的数据赋值给数组 array,从下标 0 开始。

-d delimiter

用字符串 delimiter 指定读取结束的位置,而不是一个换行符(读取到的数据不包括 delimiter)。

-e

在获取用户输入的时候,对功能键进行编码转换,不会直接显式功能键对应的字符。

-n num

读取 num 个字符,而不是整行字符。

-p prompt

显示提示信息,提示内容为 prompt。

-r

原样读取(Raw mode),不把反斜杠字符解释为转义字符。

-s

静默模式(Silent mode),不会在屏幕上显示输入的字符。当输入密码和其它确认信息的时候,这是很有必要的。

-t seconds

设置超时时间,单位为秒。如果用户没有在指定时间内输入完成,那么 read 将会返回一个非 0 的退出状态,表示读取失败。

-u fd

使用文件描述符 fd 作为输入源,而不是标准输入,类似于重定向。

问题解决

我是在windows系统上,运行.sh脚本遇到这个问题,这里应该是read在获取用户输入的时候,第一次进行了编码转换,第二次就不转换了,直接将功能键对应显式成其字符。致使在输入删除功能键时只能删除一位。

相同的问题会出现在你按这些功能键backspace键、↑、↓、←、→、F1、F2、F3、F4 输入后显示结果如下:

1

^H^H^H^[[A^[[B^[[D^[[C^[OP^[OQ^[OR^[OS

解决方式: 运用 -e 参数解决。

直接在p前加e即可。

1

read -ep

我这里修改后的脚本如下:

1 2 3 4 5 6 7 8 9 10

#!/bin/bash cd .. git add . read -ep "Please enter commit message: " commitMsg if [ -z $commitMsg ];then   commitMsg="Docs: Kingpo update $(date +'%F %a %T')" fi git commit -m "✏ $commitMsg" git push

现在功能键就完全正常,删除键执行的删除的功能。

参考

https://blog.csdn.net/lcm_linux/article/details/102899524 http://c.biancheng.net/view/2991.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • read命令
  • 问题解决
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档