A documentação read
na página bash
man diz
The exit status is zero, unless end-of-file is encountered,
read
times out (in which case the status is greater than 128), a variable assignment error (such as assigning to a readonly variable) occurs, or an invalid file descriptor is supplied as the argument to-u
.
No seu caso, suspeito que a entrada padrão esteja chegando ao fim do arquivo.
Como você está tentando esperar indefinidamente enquanto ainda permite
while sleep 1; do :; done
Isso evita surpresas relacionadas ao manuseio de E / S e garante uma reação oportuna aos sinais.