Nehmen wir den folgenden Teil des Bash-Codes an:
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
Ist es sicher anzunehmen, dass $?tatsächlich der Rückgabecode von foound nicht der Rückgabecode von enthalten ist ping? Wenn die Antwort auf diese Frage lautet: "Das können Sie nicht annehmen." Wie kann ich dann diesen Code ändern, um sicherzustellen, dass er $?immer den Rückkehrcode von enthält foo?
waitfunktioniert nicht. Der Prozess wird erfasst und der Beendigungsstatus verworfen, kurz bevor die Eingabeaufforderung angezeigt wird (Standardeinstellung).