Bash chasse l'input standard avant une lecture

Y at-il un moyen facile dans bash pour débusquer l'input standard?

J'ai un script qui est couramment exécuté, et à un moment dans le script read est utilisé pour get des commentaires de l'user. Le problème est que la plupart des users exécutent ce script en copiant et en collant la command line à partir de la documentation Web. Ils incluent souvent certains espaces blancs, ou pire, une partie du text suivant la command exemple. Je veux ajuster le script pour simplement se débarrasser de la jonque supplémentaire avant d'afficher l'invite.

Ce thread sur les E / S non bloquantes dans bash peut aider.

Il suggère d'utiliser stty et dd .

Ou vous pouvez utiliser le bash read builtin avec l'option -t 0 .

 # do your stuff # discard rest of input before exiting while read -t 0 notused; do read input echo "ignoring $input" done 

Si vous ne souhaitez le faire que si l'user se trouve sur un terminal, essayez ceci:

 # if we are at a terminal, discard rest of input before exiting if test -t 0; then while read -t 0 notused; do read input echo "ignoring $input" done fi