7

read -n 1 KEY複数の文字で表されるキーを除いて、ほとんどのキーを取得できます。たとえば、上矢印キーを押すと、次のようになります。

$ read -n 1; echo
^[[A
$ [A

ご覧のとおり、とreadだけが残ります。Esc[A

スクリプトで実行できるようにしたいのは次のとおりです。

  1. 矢印キーでリストを確認し、を押しEnterて何かを実行します
  2. その他のアクションについては、別のキーを押してください。
4

2 に答える 2

8

jm666が述べたようにダイアログを使用する方が良いですが、その猫の皮を剥ぐ方法は他にもあります。

read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done

基本的に、文字を読み取るまで待ってから、入力なしで.1秒が経過するまで入力をスピンします。

警告、速いタイピストはイライラする可能性があります。そのタイムアウトを微調整する必要があるかもしれません。

于 2012-07-21T21:57:25.697 に答える
5

あなたの質問に対する直接的な回答ではありませんが、解決方法は次のとおりです。

おそらく、シェルから「ncurses」(画面指向) ダイアログ ボックスを作成するための「dialog」ユーティリティを確認する必要があります。参照: http://hightek.org/dialog/

Google がいくつかの例を作成するか、確認してください: http://unstableme.blogspot.sk/2009/12/linux-dialog-utility-short-tutorial.html

于 2012-07-21T21:46:51.853 に答える