次のように、ユーザー入力文字を文字ごとに自動的に読み取ろうとします。
そして[1]; 読み取り -s -N 1 ... 完璧
このループはxterm
VNC()で完全に機能しますが、パテ(xterm)またはLinux端末と他のほとんどのテキスト端末では部分的にのみ機能します。
キーボードを「過度に」使用して同時に複数のキーを押すと問題が発生します。-sモードを使用しても、一部のキーストロークが鳴り続けます。。
私も出力とstty -echo
。
どんなアイデアがありますか?
答え1
read -s
echo
端末はこのコマンドの実行中にのみ無効になりますread
。したがって、2つのコマンドの間に何かを入力すると、read
ターミナルドライバはecho
それを返します。
以下を使用せずにループを無効にしたecho
後に呼び出す必要があります。read
-s
if [ -t 0 ]; then
saved=$(stty -g)
stty -echo
fi
while read -rN1; do
...
done
if [ -t 0 ]; then
stty "$saved"
fi