如何读取Bash中的任何一个键?

big*_*107 5 keyboard bash

read -n 1 KEY除了由多个字符表示的键之外,我可以获得大多数键.例如,如果我按向上箭头键:

$ read -n 1; echo
^[[A
$ [A
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,read只有剩下Esc[A就剩下了.

我希望在脚本中能够做到的是:

  1. 使用箭头键浏览列表,然后按下Enter以执行某些操作
  2. 对于其他操作,请按不同的键.

Set*_*son 8

你最好不要像jm666那样使用对话框,但是还有其他方法可以让那只猫皮肤.

read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done
Run Code Online (Sandbox Code Playgroud)

基本上等到你读取一个字符然后旋转消耗输入,直到.1秒已经过输入.

警告,快速打字员可能会生气.您可能需要调整该超时.

  • @ bi99l35:我猜2400波特拨号连接非常罕见,所以应该是安全的. (2认同)

jm6*_*666 5

不是直接回答您的问题-而是解决方案:

您可能应该检查“对话框”实用程序以从外壳创建“ncurses”(面向屏幕)对话框。见:http : //hightek.org/dialog/

谷歌形成一些例子,或检查:http : //unstableme.blogspot.sk/2009/12/linux-dialog-utility-short-tutorial.html