algo nos moldes de
echo -n "prompt" #'-n' means do not add \n to end of string
read # No arg means dump next line of input
Eu 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 para dormir parece funcionar e é bastante simples, mas não é exatamente a ideia:
doit.sh
[...]
echo 'Are you sure? Press Ctrl-C to abort.'
sleep 3
[...]
algo nos moldes de
echo -n "prompt" #'-n' means do not add \n to end of string
read # No arg means dump next line of input
read -p "Press any key to continue or CTRL-C to abort"
funciona bem em 14.04 nos meus scripts. Como @Lekensteyn afirmou no comentário acima parece que este tem sido o caso desde 12.04.4. Os estados da página "help read":
-p prompt output the string PROMPT without a trailing newline before
attempting to read
Meu uso favorito disso é definir um tempo limite padrão, para que o script também possa ser executado de forma autônoma:
echo "Press any key to continue..."
read -n1 -t5 any_key
onde:
-n1
diz à leitura para aceitar qualquer caractere único -t5
diz para esperar um máximo de 5 segundos por entrada Eu trabalho quase exclusivamente com o Bash no CentOS, então não posso garantir que isso funcione em outras variantes do Linux, mas como é o Bash, eu esperaria que funcionasse. Eu adoraria saber com certeza se isso acontece! :)
A simples espera para parar o script é chamar kill -STOP $$
do script:
Depois de pausado, o script continuará seu trabalho depois de receber o sinal -CONT.
#!/bin/bash
echo "$0 stopping now"
kill -STOP $$
echo "$0 continues its work"
echo "press enter to continue"
read unusedVariable
echo "running these 3 lines in .sh file, this echo will never be seen, unless you have a really slow computer"
coloque estas 3 linhas em um arquivo .sh e execute-o