Se você entender o que está querendo, use read
para atingir sua meta. No entanto, você não quer que o read
fique lá bloqueando indefinidamente, então você passa um tempo limite.
Por exemplo:
#!/bin/bash
sleep 5
echo done sleeping
read -N 10000000 -t 0.01
Você pode digitar o que quiser enquanto sleep
estiver sendo executado. Quando terminar, o bash invocará o read
, que irá sugar tudo o que estiver no buffer STDIN.
O -N
faz com que read
coloque o terminal no modo de caractere, em vez do modo de linha. Isso ocorre porque o emulador de terminal normalmente só envia os caracteres ao pressionar Enter . Então, se os caracteres forem inseridos sem pressionar Enter , eles aparecerão no prompt. O número é quantos caracteres para ler. Eu acho que o usuário não será capaz de digitar 10 milhões de caracteres no momento em que o script terminar.
O -t
faz com que a leitura atinja o tempo limite após 0,01 segundos. Então, se o usuário não conseguir completar os 10 milhões de caracteres em 0,01 segundos, read
desistirá e pegará o que foi digitado até agora.