私は何かをテストするための基本的なスクリプトを書いた。 (何の理由もなく)次の行を表示したいとしましょう。
#!/bin/bash
while true; do
echo -e " _____________________________________"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
read -p "Type a letter: " letter
done
入力a
と出力が与えられたら、このプログラムを正常に使用すると次のようになります。
user@DESKTOP:/mnt/c/Users/user/Documents$ ./script.sh
_____________________________________
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
Type a letter: a
_____________________________________
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
Type a letter:
しかし、端末に非常に迅速に入力を入力すると、次のように技術が壊れます。
user@DESKTOP:/mnt/c/Users/user/Documents$ ./script.sh
a
_____________________________________
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
Type a letter: _____________________________________
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
|_____________________________________|
Type a letter:
\n
私はこれを以前に試したこと------
があり、動作します。ただし、場合によっては使用しないでください。\n
どうすればこれを防ぐことができますか?ありがとうございます!
答え1
#!/bin/bash
while true; do
stty -echo
echo -e " _____________________________________"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
echo -e "|_____________________________________|"
read -t .1 -n 100 buf
stty echo
read -e -i $buf -p "Type a letter: " letter
done