In Bash 4 können Sie -t
festlegen (Zeitüberschreitung) auf 0
. In diesem Fall read
kehrt sofort mit einem Exit-Status zurück, der angibt, ob Daten warten oder nicht:
# do some time consuming task here
while read -r -t 0; do read -r; done
read -p "Give me some input: " input
Ich glaube nicht, dass es eine Möglichkeit gibt, stdin zu löschen, aber (mit bash) können Sie lesen und verwerfen, was da ist, bevor Sie nach der Eingabe fragen
#do some time consuming task here
read -t 1 -n 10000 discard
read -p "Give me some input: " input
Dies liest stdin und hat ein Timeout von 1 Sekunde, es schlägt jedoch fehl, wenn mehr als 10000 Zeichen in stdin vorhanden sind. Ich weiß nicht, wie groß Sie den nchars-Parameter machen können.
read -d '' -t 0.1 -n 10000
Dies liest mehrere Eingabezeilen, wenn der Benutzer versehentlich mehrmals die Eingabetaste gedrückt hat