¿Cómo ejecutar scripts bash con contenedores acoplables en el orden correcto?

¿Cómo ejecutar scripts bash con contenedores acoplables en el orden correcto?

Tengo un script bash principal que ejecuta varios scripts bash más pequeños (y cada script más pequeño ejecuta un contenedor acoplable), pero quiero que el segundo script se ejecute solo después de que el primero haya terminado de ejecutarse, y así sucesivamente. Es decir, quiero que los procesos de cada script NO se ejecuten simultáneamente. Ejemplo:

1st_script.sh param1 param2 param3
2nd_script.sh param1 param2

Las sugerencias en línea no me funcionan. Intenté obtener el PID de 1st_script con:

1st_Script & echo $!

para luego usarlo ps -p <PID> || <2nd_script> , pero aunque <1st_Script> & echo $!proporciona un PID, cuando compruebo si el proceso está ahí, ps -p <PID>no hay nada. Sé que 1st_script se está ejecutando porque el contenedor acoplable que ejecuta aparece en la lista docker ps. Por lo tanto, su proceso también debería enumerarse conps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...No es una opción porque tengo muchos scripts y no son legibles.

Respuesta1

Las líneas de continuación pueden mejorar enormemente la legibilidad:

script1 && script2 && script3 && scriptn

versus

script1 \
  && script2 \
  && script3 \
  && scriptn

Pero tengo problemas para reproducir tu problema. ¿Qué te da la impresión de que tus guiones sonnofuncionando secuencialmente?

Hice dos scripts de prueba y cada uno contenía

echo hello
sleep 15s

y luego un guión que contenía sólo

./script1
./script2

y midió la espera usando timepara obtener el siguiente resultado

hello
hello

real    0m30.003s
user    0m0.002s
sys     0m0.001s

Si los scripts se ejecutaran simultáneamente, el tiempo total necesario habría sido inferior a 30 segundos.

¿Es tu problema que quieres elenvase¿dejar de ejecutarse antes de pasar al siguiente script?

información relacionada