read -n 1 KEY
複数の文字で表されるキーを除いて、ほとんどのキーを取得できます。たとえば、上矢印キーを押すと、次のようになります。
$ read -n 1; echo
^[[A
$ [A
ご覧のとおり、とread
だけが残ります。Esc[A
スクリプトで実行できるようにしたいのは次のとおりです。
- 矢印キーでリストを確認し、を押しEnterて何かを実行します
- その他のアクションについては、別のキーを押してください。
jm666が述べたようにダイアログを使用する方が良いですが、その猫の皮を剥ぐ方法は他にもあります。
read -n 1 x; while read -n 1 -t .1 y; do x="$x$y"; done
基本的に、文字を読み取るまで待ってから、入力なしで.1秒が経過するまで入力をスピンします。
警告、速いタイピストはイライラする可能性があります。そのタイムアウトを微調整する必要があるかもしれません。
あなたの質問に対する直接的な回答ではありませんが、解決方法は次のとおりです。
おそらく、シェルから「ncurses」(画面指向) ダイアログ ボックスを作成するための「dialog」ユーティリティを確認する必要があります。参照: http://hightek.org/dialog/
Google がいくつかの例を作成するか、確認してください: http://unstableme.blogspot.sk/2009/12/linux-dialog-utility-short-tutorial.html