Lo que quiero hacer es procesar los datos cuando lleguen, independientemente de los saltos de línea.
- Cuando se usa
read -n $n
con una tubería en stdin, Bash realiza una llamada al sistemaread (0, buf, 1)
por byte, lo cual es demasiado lento si la cantidad de datos a procesar no es pequeña (digamos, 1 MB o más). - Cuando uso,
read -N $n
Bash realiza repetidas llamadas al sistemaread (0, buf, <RestOf$n>)
hasta que$n
se alcanza, por lo que no puedo comenzar a procesar lo recibido hasta ahora. - Cuando lo uso,
read -N $n -t 0.1
obtengo un valor vacío$REPLY
incluso si se han leído algunos datos. Eso significa: se pierden datos. ¿Es esto un error o una característica de Bash?
Entonces, ¿cómo puedo hacer exactamente una read
llamada al sistema con un count
argumento arbitrario bash
y luego procesar la entrada recibida hasta el momento?