#!/bin/bash
function back()
{
sleep $1
exit $2
}
back $1 $2 &
b=$!
if `wait $!`;then
echo success
else
echo failure
fi
bash-3.00# ./back 300 0
failure
bash-3.00# ./back 300 1
failure
Je m'attendais successà un statut de sortie lorsque j'envoie 0, mais j'obtiens toujours failure.
De plus, waitn'attend pas 300 secondes. Au lieu de cela, je reçois le message immédiatement. Je suppose que $!c'est l'enfant immédiat de $$mon script. N'est-ce pas?
Est-il possible de capturer l'état de sortie d'attente comme exit_status=$(wait $!)?
if ! ((exit_status));then
echo sucess
else
failure
fi