2つの「読み取り」の間のキーボード入力バッファを無視する方法

2つの「読み取り」の間のキーボード入力バッファを無視する方法

このようなスクリプトを実行すると

read -n 1 -p 'Enter first variable: ' var1
if echo "${var1}" | grep -iq "^y"
then
    echo "okay"
else
    echo "not okay"
fi

sleep 2

read -n 1 -p 'Enter second variable: ' var2
if echo "${var2}" | grep -iq "^y"
then
    echo "okay"
else
    echo "not okay"
fi

このコードを実行して2秒以内にクリックすると、バッファyに保存され、次に渡されるため、ユーザーに入力を待たずにバッファにキーのみを提供します。そうですね。ここで。nnreadEnter second variable:n

明確にするために、次の質問で私の問題を別の言葉で説明しますが、質問は1つだけです。

キーのメモリへのバッファリングを停止する方法は?または

バッファの2番目の変数へのユーザー入力を無視する方法var2または

read最初の入力から2秒以内に何を入力しても、2番目の入力readとして使用されないように、1番目と2番目の間のキーボード入力を無効/無視するにはどうすればよいですか?read

ベストアンサー1

tcflush()保留中の入力をフラッシュするには、POSIX関数を呼び出す必要があります。

たとえば、

perl -MPOSIX -e 'tcflush 0,0'

おすすめ記事