#!/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
Oczekiwałem success
statusu wyjścia, gdy wysyłam 0, ale wciąż otrzymuję failure
.
Ponadto wait
nie czeka przez 300 sekund. Zamiast tego natychmiast otrzymuję wiadomość. Zakładam, że $!
jest to bezpośrednie dziecko $$
w moim skrypcie. Czyż nie
Czy można uchwycić status wyjścia oczekiwania, jak exit_status=$(wait $!)
?
if ! ((exit_status));then
echo sucess
else
failure
fi