如何在shell脚本中读取单个字符
我想要类似的选项,如 C 中的 getche()
。如何从命令行读取单个字符输入?
使用read
命令我们可以做到吗?
I want similar option like getche()
in C. How can I read just a single character input from command line?
Using read
command can we do it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
在 bash 中,
read
可以做到这一点:In bash,
read
can do it:read -n1
适用于 bashstty raw
模式会阻止 ctrl-c 工作,并可能让您陷入输入循环而无法退出。手册页还说stty -raw
不能保证将您的终端返回到相同的状态。因此,使用
stty -icanon -echo
在 dtmilano 的答案 的基础上构建可以避免这些问题。read -n1
works for bashThe
stty raw
mode prevents ctrl-c from working and can get you stuck in an input loop with no way out. Also the man page saysstty -raw
is not guaranteed to return your terminal to the same state.So, building on dtmilano's answer using
stty -icanon -echo
avoids those issues.在 ksh 中你基本上可以这样做:
In ksh you can basically do:
从输入中精确读取一个字符
将结果打印在屏幕
文档上: https://www.computerhope .com/unix/bash/read.htm
reads exactly one character from input
prints the result on the screen
doc: https://www.computerhope.com/unix/bash/read.htm
有些人的意思是“从命令行输入”是给命令的参数,而不是从 STDIN 读取......所以请不要开枪打我。但我也有一个(也许不是最复杂的)STDIN 解决方案!
当使用 bash 并将数据存储在变量中时,您可以使用参数扩展
,当然您可以对给定的参数执行该操作(
$1
、$2
、$3
code> 等)读取脚本
执行
从 STDIN
脚本
执行
Some people mean with "input from command line" an argument given to the command instead reading from STDIN... so please don't shoot me. But i have a (maybe not most sophisticated) solution for STDIN, too!
When using bash and having the data in a variable you can use parameter expansion
and of course you can perform that on given args (
$1
,$2
,$3
, etc.)Script
Execution
reading from STDIN
Script
Execution