Verwendung waitmit einer PID, die :
Warten Sie, bis der untergeordnete Prozess, der von der Prozess-ID pid oder der Jobspezifikation jobspec angegeben wurde, beendet ist, und geben Sie den Beendigungsstatus des letzten Befehls zurück, auf den gewartet wurde.
Sie müssen die PID jedes Prozesses währenddessen speichern:
echo "x" & X=$!
echo "y" & Y=$!
echo "z" & Z=$!
Sie können die Jobsteuerung im Skript auch mit set -meiner %nJobspezifikation aktivieren und verwenden, möchten dies aber mit ziemlicher Sicherheit nicht. Die Jobsteuerung hat viele andere Nebenwirkungen .
waitGibt den gleichen Code zurück, mit dem der Vorgang abgeschlossen wurde. Sie können wait $Xzu einem beliebigen (angemessenen) späteren Zeitpunkt auf den endgültigen Code zugreifen $?oder ihn einfach als true / false verwenden:
echo "x" & X=$!
echo "y" & Y=$!
...
wait $X
echo "job X returned $?"
wait wird angehalten, bis der Befehl abgeschlossen ist, sofern dies noch nicht geschehen ist.
Wenn Sie möchten , dass ein Abwürgen vermeiden möchten, können Sie einen Satz trapaufSIGCHLD , zählen die Anzahl der Abschlüsse und behandeln alle die waits auf einmal , wenn sie alle fertig sind. Sie können wahrscheinlich waitfast die ganze Zeit damit davonkommen, allein zu sein.