ti-enxame.com

Como faço para pausar meu script da Shell por um segundo antes de continuar?

Eu só encontrei como esperar pela entrada do usuário. No entanto, quero apenas pausar para que meu while true não trave meu computador.

Eu tentei pause(1), mas diz -bash: syntax error near unexpected token '1'. Como pode ser feito?

567
user3268208

Use o comando sleep.

Exemplo:

sleep .5 # Waits 0.5 second.
sleep 5  # Waits 5 seconds.
sleep 5s # Waits 5 seconds.
sleep 5m # Waits 5 minutes.
sleep 5h # Waits 5 hours.
sleep 5d # Waits 5 days.

Pode-se também empregar decimais ao especificar uma unidade de tempo; por exemplo. sleep 1.5s

1016
RydallCooper

Em Python (pergunta foi originalmente marcada Python) você precisa importar o módulo de tempo

import time
time.sleep(1)

ou

from time import sleep
sleep(1)

Para shell script é apenas

sleep 1

Que executa o comando sleep. por exemplo. /bin/sleep

63
John La Rooy

E sobre:

read -p "Press enter to continue"
55
Vonton

Eu percebo que estou um pouco atrasado com isso, mas você também pode ligar para o sono e passar o tempo que ele está passando. Por exemplo, se eu quisesse esperar por 3 segundos, eu poderia fazer:

/bin/sleep 3

4 segundos ficaria assim:

/bin/sleep 4
37
pcmaster574

No Mac OSX, o sono não leva minutos/etc, apenas alguns segundos. Então, por dois minutos,

sleep 120
29
AnneTheAgile

Dentro do script você pode adicionar o seguinte entre as ações que você gostaria que a pausa. Isso irá pausar a rotina por 5 segundos.

read -p "Pause Time 5 seconds" -t 5
read -p "Continuing in 5 Seconds...." -t 5
echo "Continuing ...."
15
Jose H. Rosa

Execute vários suspensos e comandos

sleep 5 && cd /var/www/html && git pull && sleep 3 && cd ..

Isto irá esperar por 5 segundos antes de executar o primeiro script, então irá dormir novamente por 3 segundos antes de alterar o diretório novamente.

13
Robot Boy

read -r -p "Wait 5 seconds or press any key to continue immediately" -t 5 -n 1 -s

Para continuar quando você pressionar qualquer botão

4
Andrey

Você pode fazê-lo esperar usando $ RANDOM, um gerador de números aleatórios padrão. No abaixo estou usando 240 segundos. Espero que ajude @

> WAIT_FOR_SECONDS=`/usr/bin/expr $RANDOM % 240` /bin/sleep
> $WAIT_FOR_SECONDS
1