Uma maneira bastante bárbara de fazer isso seria matar o processo sleep
(não o subnível completo no qual seu script / função é executado). Considere o seguinte script de shell:
#!/bin/bash
sleep 20
echo "Done!"
ou, com uma função:
#!/bin/bash
function gotosleep()
{
sleep 20
echo "Done!"
}
gotosleep &
sleep 60 # Not really necessary, keeps the script in foreground.
Em seguida, localize o processo sleep
:
$ ps -ef | grep sleep
you PID PGID ... sleep 20
E mate:
$ kill PID
Seu roteiro será gerado (pelo menos em bash
):
./script.sh: line 2: PID Terminated sleep 20
Done!
Como você não quer wait
corretamente, você terá que fazer com a pequena mensagem de Bash. Se você mudar de ideia, dê uma olhada em esta pergunta :
sleep 20 &
if wait $! 2>/dev/null; then
# Keep working
continue
else
echo "Done!"
return # from function
fi