4

次の最小化された Bash スクリプトを検討してください。

echo Enter your name:
read NAME
echo $NAME

スクリプトを実行して名前を入力し、矢印キーで入力をナビゲートしたい場合、[[D^文字が返されます。

このような動作に対応するには、スクリプトをどのように書き直しますか。つまり、ASCII コンテストに勝つ代わりに、キーを使用して移動できるようにしますか?

4

2 に答える 2

4

これらの文字シーケンスは、端末が「左カーソル」が押されたことを伝える方法です。それを受け取ったプログラムがそれをそのように解釈せず、代わりに(エスケープ文字をフィルタリングした後)表示するだけの場合、それが得られます。

幸いなことに、bash の read コマンドには-e、行を読み取るために Readline を使用できるようにするオプションがあります。readline は、(通常の bash コマンド入力の場合と同様に) すべての処理を実行します。

于 2013-11-06T18:03:05.583 に答える
1

Andreas と検索エンジンのデューデリジェンスのおかげで、スクリプトを書き直すことができました。

echo Enter your name:
read -e NAME
echo $NAME

矢印キーを使用して入力をナビゲートすると、期待どおりに機能するようになりました。

ここでは、 read 組み込みコマンドについて詳しく知ることができます。

于 2013-11-06T19:16:29.803 に答える