Como Deathgrip mencionou em um comentário, você deve matar o processo pai de sleep
, que você pode encontrar com alguma variação de ps | grep sleep
( ps
tem muitas implementações, então não vou adivinhar exatamente quais bandeiras você precisa para fornecer ou com o que sua saída se parece. Verifique man ps
)
O que está acontecendo? Quando você mata sleep
, ele termina, mas isso não afeta a execução do script que contém ... ele simplesmente passa para a próxima linha e o loop continua em loop. Existem algumas maneiras que você pode modificar o script para que o sono funcione. Um dos mais simples é fazer isso: sleep 5 || exit
.
Como alternativa, se você estiver usando o Bash (outros?), basta adicionar essa linha no começo: set -e
. Isso diz ao Bash para encerrar o script se algum comando dentro falhar (isto é, retornar um status diferente de zero). Mas isso afeta tudo em seu script e tem várias outras armadilhas, então é melhor evitar essa solução. (Você pode adicionar set -e
na linha antes de dormir e desabilitar com set +e
imediatamente depois, mas isso está ficando meio ridículo, já que você pode usar a primeira solução que mencionei.)