Por que o tempo limite da leitura interrompe meu console?

1

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.

    
por Hashbrown 31.01.2014 / 04:51

0 respostas