Tengo script que incluye múltiples comandos. ¿Cómo puedo agrupar comandos para que se ejecuten juntos? (Quiero hacer varios grupos de comandos. Dentro de cada grupo, los comandos deben ejecutarse en paralelo (al mismo tiempo). Los grupos deben ejecutarse secuencialmente, esperando que un grupo termine antes de comenzar siguiente grupo) ... es decir
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
¿Cómo puedo ejecutar cada 3 comandos para gether? Lo intenté:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Pero esto no funcionó correctamente (quiero ejecutar los grupos de comandos en paralelo al mismo tiempo. También necesito esperar a que termine el primer grupo antes de ejecutar el siguiente grupo)
¡El script está saliendo con un mensaje de error!
Respuestas:
Los comandos dentro de cada grupo se ejecutan en paralelo, y los grupos se ejecutan secuencialmente, cada grupo de comandos paralelos espera que el grupo anterior termine antes de comenzar la ejecución.
El siguiente es un ejemplo de trabajo:
Asuma 3 grupos de comandos como en el código a continuación. En cada grupo, los tres comandos se inician en segundo plano con
&
.Los 3 comandos se iniciarán casi al mismo tiempo y se ejecutarán en paralelo mientras el script
waits
termina.Después de los tres comandos en la salida del tercer grupo,
command 10
se ejecutará.fuente
Debería funcionar (cada componente de triplete individual se ejecutará secuencialmente, pero los grupos se ejecutarán en paralelo). Probablemente no desee que su shell principal salga antes de que los grupos hayan terminado, de ahí el
wait
.fuente
wait
.