Não, isso não vai fazer o que você quer. Mas na verdade é mais simples que isso.
Antes de mais nada, em um nível simples, sua análise está correta.
Se script3
disser
./script1
./script2
então, sim, script3
esperará que script1
seja concluído,
e então iniciará script2
.
O problema é que script1
irá "terminar" essencialmente imediatamente -
ou seja, no tempo necessário para gerar os dois processos A
-
e assim os comandos B
serão iniciados
enquanto os comandos A
ainda estão em execução. Não é o que você quer.
A solução é
./A.1 &
./A.2 &
wait
./B.1 &
./B.2 &
./B.3 &
O comando wait
(como o próprio nome sugere)
aguarda que os processos assíncronos existentes sejam encerrados antes de continuar.
O comando wait
deve ser executado pelo mesmo shell
que gerou os processos A
. Você poderia colocar todos os seis comandos
em um único script, ou os três primeiros em um e os três últimos em outro,
ou várias outras combinações.
Além disso, talvez você queira fazer um wait
depois dos comandos B
também.