#!/bin/bash
command1 &
command2 &
command3 &
wait
command4
wait
(sin ningún argumento) esperará hasta que todos los procesos en segundo plano hayan salido.
La descripción completa de wait
en el bash
manual:
wait [-n] [n ...]
Espere a cada proceso secundario especificado y devuelva su estado de finalización. Cada uno n
puede ser un ID de proceso o una especificación de trabajo; Si se proporciona una especificación de trabajo, se esperan todos los procesos en la tubería de ese trabajo. Si n
no se proporciona, se esperan todos los procesos secundarios actualmente activos y el estado de retorno es cero. Si -n
se proporciona la
opción, wait
espera a que finalice cualquier trabajo y devuelve su estado de salida. Si n
especifica un proceso o trabajo inexistente, el estado de retorno es 127. De lo contrario, el estado de retorno es el estado de salida del último proceso o trabajo esperado.
PID1=$!
y luego esperarlos a todoswait "$PID1" "$PID2" "$PID3"
. Eso es un poco más complicado, pero funcionará si el proceso tiene otros hijos a los que no desea esperar.