Załóżmy następujący fragment kodu bash:
foo > logfile 2>&1 &
foo_pid=$!
while ps -p$foo_pid
do
ping -c 1 localhost
done
wait $foo_pid
if [[ $? == 0 ]]
then
echo "foo success"
fi
Czy można bezpiecznie założyć, że $?
rzeczywiście zawiera kod powrotu, foo
a nie kod powrotu ping
? Jeśli odpowiedź na to pytanie brzmi: „Nie możesz tego założyć”. to jak mogę zmodyfikować ten fragment kodu, aby mieć pewność, że $?
zawsze zawiera kod powrotu foo
?
wait
nie działa. Proces jest gromadzony, a status wyjścia odrzucany tuż przed wyświetleniem monitu (domyślnie).