Use wait
com 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 -m
e usar uma %n
especificação de tarefas, mas quase certamente não deseja - o controle de tarefas tem muitos outros efeitos colaterais .
wait
retornará o mesmo código que o processo finalizado. Você pode usar wait $X
a 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 trap
emSIGCHLD
, contar o número de terminações, e lidar com todos os wait
s de uma só vez quando temos tudo acabado. Você provavelmente pode usar o uso wait
sozinho quase o tempo todo.