Qual é o equivalente bash do comando pause do DOS?

13

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
[...]
    
por th3pr0ph3t 27.02.2012 / 18:00

5 respostas

10

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
    
por Huckle 27.02.2012 / 18:08
2

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
    
por Elder Geek 17.11.2015 / 00:09
1

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! :)

    
por John Landells 31.12.2015 / 10:50
0

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"
    
por ptwolny 24.11.2015 / 12:54
-2
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

    
por Then Enok 13.11.2013 / 19:18

Tags