I'm writing a Korn shell script, and it will read input from the user. I would like to clear the keyboard buffer before calling the "read" command, so that the user doesn't cause problems by impatiently typing ahead. I might add that the intended audience for this script is myself. 🙂
I'm using the OpenBSD ksh, which appears to be a variant of ksh88. I do have ksh93 available, but would prefer to NOT rely on Bash.
# Would like to clear stdin buffer here echo "Are you sure?" read input case $input in y*|Y*) echo "You said yes!" ;; *) echo "You said no!" exit 1 ;; esac
EDIT: Basically I want to clear ALL data from stdin before calling the "read".
I'm currently experimenting with setting a signal handler for SIGALRM and using trap to implement a timeout on doing a "pre-read".