Bash 4 では、 -t
を設定できます (タイムアウト) 0
まで .この場合、read
待機中のデータがあるかどうかを示す終了ステータスですぐに戻ります:
# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input
標準入力をクリアする方法はないと思いますが、(bash を使用すると) 入力を求める前にそこにあるものを読み取って破棄できます
#do some time consuming task here
read -t 1 -n 10000 discard
read -p "Give me some input: " input
これは stdin を読み取り、タイムアウトは 1 秒ですが、stdin に 10000 文字を超える文字がある場合は失敗します。 nchars パラメータをどれだけ大きくできるかわかりません。
read -d '' -t 0.1 -n 10000
ユーザーが誤って複数回エンターを押した場合、これは複数行の入力を読み取ります