Eu tenho um script que está causando um problema, eu reduzi a isso:
#/bin/bash
read -t 1 -p 'Wanna continue?'
less +F readTimeout.sh
echo 'Wont get printed'
O script original operado solicitando que o usuário continue, mas depois de esperar por cinco segundos (neste caso, um) ele continuará por conta própria.
Em seguida, prossegue para a cauda de um arquivo de log (neste caso, em si, para fins demonstrativos).
Em seguida, ele deve executar o restante dos comandos depois que o usuário fechar less
.
Bem, quando less
está no modo tail
, você precisa pressionar ctrl + c para impedir que ele siga o arquivo (então você pode rolar / procure o que está em less
até agora, ou mude + f para seguir novamente, ou Q para sair).
O problema para este script é que, quando você ^C
mata less
, o leva de volta ao prompt (ou seja, o restante dos comandos não são executados) e impede que qualquer coisa que você digite seja ecoada (se você pressionar digite seus comandos estão sendo gravados no console, no entanto)!
Sem a opção -t
em read
(ou se você responder antes do tempo limite), ela funciona bem.
Alguma idéia de por que isso acontece e / ou como combater isso? Até agora, recorri a apenas forçar o usuário a responder ao prompt (ou seja, remover o sinal timeout
de read
)
P.S.
Isso é independente do emulador de terminal (testado konsole
e xterm
).
E eu tentei colocar stty sane
após a linha read
caso isso conserte.