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, fooa 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?
waitnie działa. Proces jest gromadzony, a status wyjścia odrzucany tuż przed wyświetleniem monitu (domyślnie).