Preciso de uma pausa em um script de shell para mostrar um aviso antes de continuar. Por exemplo, no DOS, é assim:
doit.bat:
[...]
echo 'Are you sure? Press Ctrl-C to abort, enter to continue.'
pause
[...]
Como posso fazer isso no bash? No momento, um comando de suspensão parece fazer o truque e é bastante simples, mas não é exatamente a idéia:
doit.sh
[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]
Respostas:
algo ao longo das linhas de
fonte
read -p "prompt"
. Mais detalhes sobre os built-ins do shell podem ser recuperados com ohelp
comando, por exemplohelp read
.echo -n
eprintf
. Se você pressionar Enter, receberá uma nova linha.bash
não é necessário que a leitura tenha um argumento. O usosh
(que geralmente é chamadobash
nosh
modo compatível)read
requer um argumento. Se você iniciar seu script#!/bin/sh
, verá o último comportamentoread -p "Press any key to continue or CTRL-C to abort"
funciona bem sob 14.04 nos meus scripts. Como @Lekensteyn afirmou no comentário acima, parece que esse tem sido o caso desde 12.04.4. A página 'ajuda de leitura' indica:fonte
Meu uso favorito disso é definir um tempo limite padrão, para que o script também possa executar autônomo:
Onde:
-n1
diz à leitura para aceitar qualquer caractere único-t5
manda esperar no máximo 5 segundos pela entradaEu trabalho quase exclusivamente com o Bash no CentOS, então não posso garantir isso em outras variantes do Linux, mas como é o Bash, espero que funcione. Eu adoraria saber com certeza se isso acontece! :)
fonte
A simples espera para interromper o script é chamar a
kill -STOP $$
partir do script: Após uma pausa, o script continuará seu trabalho após receber o sinal -CONT.fonte
CONT
sinal para o script?coloque essas 3 linhas em um arquivo .sh e execute-o
fonte
echo
comando não apareceu e o que isso tem a ver com a velocidade do computador?