Sí, si usted no hace nada más, entonces los comandos en un script bash son serializados. Se puede decir bash para ejecutar un montón de comandos en paralelo, y luego esperar a que todos ellos hasta el final, pero haciendo algo como esto:
command1 &
command2 &
command3 &
wait
Los símbolos de unión al final de cada una de las tres primeras líneas dice que bash ejecuta el comando en el fondo. El cuarto comando, wait
, le dice a bash que espere hasta que todos los procesos secundarios hayan salido.
Tenga en cuenta que si hace las cosas de esta manera, no podrá obtener el estado de salida de los comandos secundarios (y set -e
no funcionará), por lo que no podrá determinar si tuvieron éxito o fallaron de la manera habitual.
El bash manual tiene más información (busque wait
, aproximadamente dos tercios del camino hacia abajo).
Usted _puede realmente capturar los estados de retorno de los procesos. Obtenga el pid de cada comando usando '$!', Manténgalos en una matriz y luego recorra esa matriz, llamando 'wait pid; echo $? 'para cada pid. –