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.