Como executar a operação “&” sequencialmente

1

Do meu script, estou executando os seguintes comandos:

 SCRIPT_1="ksh -x script1.sh & ksh -x script2.sh";
 SCRIPT_2="ksh -x script3.sh & ksh -x script4.sh";
 eval $SCRIPT_1;
 sleep 20s;
 eval $SCRIPT_2;

Eu quero apenas executar o $SCRIPT_2 após a conclusão do $SCRIPT_1 . Mas atualmente ambos são executados ao mesmo tempo, independentemente de estarem sendo executados em linhas separadas.

Alguma ideia de como esperar que o outro script termine antes de executar o próximo?

    
por Sas 17.12.2014 / 16:48

2 respostas

1
SCRIPT_1="ksh -x script1.sh & bg_pid=$!; ksh -x script2.sh; wait $bg_pid";
SCRIPT_2="ksh -x script3.sh & bg_pid=$!; ksh -x script4.sh; wait $bg_pid";
eval $SCRIPT_1;
sleep 20s;
eval $SCRIPT_2;
    
por 17.12.2014 / 16:52
0

Usando o GNU Parallel você faria algo como:

parallel ksh -x ::: script1.sh script2.sh
parallel ksh -x ::: script3.sh script4.sh
    
por 14.04.2017 / 12:07