shell read lee una entrada incorrecta
Linux tiene el concepto de búfer. Lee lecturas del búfer de entrada. Si ya hay datos en el búfer, se toman directamente. Antes de leer? ss, use otra declaración de lectura para leer los datos del búfer. El búfer se borrará. En este momento, si ingresa nuevamente, podrá leerlo mediante read?ss.
Este es ciertamente un método, pero también trae un problema: si no hay entrada dentro del tiempo de espera de 20 segundos, el script le pedirá que ingrese dos veces.
Entonces, la solución perfecta debería ser la siguiente: dormir?20
leer?-t?1?descartar
leer?-p?"Por favor? input :?"?ss
echo?$ss
Utilice el mecanismo de tiempo de espera de lectura y establezca el tiempo de espera en 1 segundo, que es la configuración de tiempo de espera más corta.
De esta manera, incluso si no hay ninguna entrada durante el tiempo de espera, el primer comando de lectura saldrá automáticamente después de un tiempo de espera de 1 segundo.
Referencia:/questions/276531/clear-stdin-before-reading