Use waitcom um PID, que irá:
Aguarde até que o processo filho especificado por cada ID de processo pid ou especificação de tarefa jobspec saia e retorne o status de saída do último comando esperado.
Você precisará salvar o PID de cada processo à medida que avança:
echo "x" & X=$!
echo "y" & Y=$!
echo "z" & Z=$!
Você também pode ativar o controle de tarefas no script set -me usar uma %nespecificação de tarefas, mas quase certamente não deseja - o controle de tarefas tem muitos outros efeitos colaterais .
waitretornará o mesmo código que o processo finalizado. Você pode usar wait $Xa qualquer momento (razoável) posteriormente para acessar o código final $?ou simplesmente usá-lo como verdadeiro / falso:
echo "x" & X=$!
echo "y" & Y=$!
...
wait $X
echo "job X returned $?"
wait fará uma pausa até que o comando seja concluído, se ainda não o tiver feito.
Se você quiser evitar parar assim, você pode definir um trapemSIGCHLD , contar o número de terminações, e lidar com todos os waits de uma só vez quando temos tudo acabado. Você provavelmente pode usar o uso waitsozinho quase o tempo todo.