Aplicações Práticas do Comando Sleep
Agora que você entende os conceitos básicos do comando sleep e como usá-lo com variáveis, vamos explorar algumas aplicações práticas. Estes exemplos demonstram como o comando sleep é usado em cenários do mundo real.
Criando um Cronômetro de Contagem Regressiva Simples
Vamos criar um cronômetro de contagem regressiva que demonstra um uso mais complexo do comando sleep:
cd ~/project
touch countdown.sh
nano countdown.sh
Adicione o seguinte conteúdo:
#!/bin/zsh
## Função para exibir uma contagem regressiva
countdown() {
local seconds=$1
while [ $seconds -gt 0 ]; do
echo -ne "\rTempo restante: $seconds segundos "
sleep 1
((seconds--))
done
echo -e "\rContagem regressiva concluída! "
}
## Especifique a duração da contagem regressiva
echo "Iniciando uma contagem regressiva de 5 segundos:"
countdown 5
echo "Execução do script de contagem regressiva concluída."
Salve, saia do nano e torne o script executável:
chmod +x countdown.sh
Execute o script:
./countdown.sh
Você deve ver uma contagem regressiva de 5 segundos a 0, com o tempo atualizando no local:
Iniciando uma contagem regressiva de 5 segundos:
Tempo restante: 5 segundos
Tempo restante: 4 segundos
Tempo restante: 3 segundos
Tempo restante: 2 segundos
Tempo restante: 1 segundos
Contagem regressiva concluída!
Execução do script de contagem regressiva concluída.
Simulando um Processo com Indicador de Progresso
Vamos criar um script que simula um processo de longa duração com um indicador de progresso simples:
cd ~/project
touch progress.sh
nano progress.sh
Adicione o seguinte conteúdo:
#!/bin/zsh
## Função para mostrar uma barra de progresso simples
show_progress() {
local duration=$1
local steps=10
local step_duration=$(echo "scale=2; $duration / $steps" | bc)
echo "Iniciando o processo..."
echo -n "Progresso: ["
for i in {1..10}; do
sleep $step_duration
echo -n "#"
done
echo "] Concluído!"
}
## Execute um processo que leva 5 segundos com um indicador de progresso
show_progress 5
echo "Processo concluído com sucesso."
Salve, saia do nano e torne o script executável:
chmod +x progress.sh
Execute o script:
./progress.sh
Você deve ver uma barra de progresso que se preenche ao longo de 5 segundos:
Iniciando o processo...
Progresso: [##########] Concluído!
Processo concluído com sucesso.
Controlando a Taxa de Operações
Neste exemplo, demonstraremos como usar o comando sleep para controlar a taxa de operações, o que é útil para limitar a taxa de chamadas de API ou processar grandes conjuntos de dados:
cd ~/project
touch rate_limit.sh
nano rate_limit.sh
Adicione o seguinte conteúdo:
#!/bin/zsh
## Defina o limite de taxa (operações por segundo)
OPERATIONS_PER_SECOND=2
SLEEP_DURATION=$(echo "scale=3; 1 / $OPERATIONS_PER_SECOND" | bc)
echo "Realizando operações a uma taxa de $OPERATIONS_PER_SECOND por segundo"
echo "Cada operação será seguida por um atraso de $SLEEP_DURATION segundos"
## Simule 6 operações com limitação de taxa
for i in {1..6}; do
echo "Realizando a operação $i em $(date +%H:%M:%S.%N | cut -c1-12)"
## Simule a operação
sleep 0.1
## Atraso de limitação de taxa entre as operações
if [ $i -lt 6 ]; then
sleep $SLEEP_DURATION
fi
done
echo "Todas as operações concluídas"
Salve, saia do nano e torne o script executável:
chmod +x rate_limit.sh
Execute o script:
./rate_limit.sh
Você deve ver as operações sendo realizadas a uma taxa controlada:
Realizando operações a uma taxa de 2 por segundo
Cada operação será seguida por um atraso de 0.500 segundo
Realizando a operação 1 em 10:30:45.12
Realizando a operação 2 em 10:30:45.72
Realizando a operação 3 em 10:30:46.32
Realizando a operação 4 em 10:30:46.92
Realizando a operação 5 em 10:30:47.52
Realizando a operação 6 em 10:30:48.12
Todas as operações concluídas
Estes exemplos demonstram como o comando sleep pode ser usado em cenários de scripting mais avançados. A capacidade de controlar o tempo é uma ferramenta poderosa em shell scripting que permite muitas aplicações práticas.