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 foo
und 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
?
wait
funktioniert nicht. Der Prozess wird erfasst und der Beendigungsstatus verworfen, kurz bevor die Eingabeaufforderung angezeigt wird (Standardeinstellung).