Como executar scripts bash com contêineres docker na ordem correta?

Como executar scripts bash com contêineres docker na ordem correta?

Eu tenho um script bash principal que executa vários scripts bash menores (e cada script menor executa um contêiner docker). Mas quero que o segundo script seja executado somente depois que o primeiro terminar de ser executado e assim por diante. Ou seja, quero que os processos de cada script NÃO sejam executados simultaneamente. Exemplo:

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

Sugestões online não estão funcionando para mim. Tentei obter o PID do 1st_script com:

1st_Script & echo $!

para então usar ps -p <PID> || <2nd_script> Mas embora <1st_Script> & echo $!dê um PID, quando verifico se o processo está lá ps -p <PID>não há nada. Eu sei que 1st_script está em execução porque o contêiner docker que ele executa está listado com docker ps. Portanto, seu processo também deve ser listado comps -p <PID>

1st_Script && 2nd_Script && 3rd_Script && ...não é uma opção porque tenho muitos scripts e não é legível

Responder1

As linhas de continuação podem melhorar muito a legibilidade:

script1 && script2 && script3 && scriptn

contra

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

Mas estou tendo problemas para reproduzir seu problema. O que lhe dá a impressão de que seus scripts sãonãoexecutando sequencialmente?

Fiz dois scripts de teste que continham cada um

echo hello
sleep 15s

e então um script que continha apenas

./script1
./script2

e mediu a espera usando timepara obter a seguinte saída

hello
hello

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

Se os scripts fossem executados simultaneamente, o tempo total gasto seria inferior a 30 segundos.

O seu problema é que você quer orecipienteparar de executar antes de passar para o próximo script?

informação relacionada