command1 &
command2 &
wait
echo 'command1 and command2 have finished'
command3 &
command4 &
wait
echo 'command3 and command4 have finished'
A chamada para wait
fará uma pausa no script até que todas as tarefas em segundo plano tenham terminado de executar.
Como alternativa (apenas "para sua informação"), dependendo se você deseja que o comando 1 e 2 sejam executados simultaneamente ou não (equivalentemente para o comando 3 e 4):
( command1; command2 ) &
echo 'command1 and command2 are running'
wait
echo 'command1 and command2 have finished'
No caso acima, command1
e command2
serão executados em segundo plano, mas não simultaneamente entre si.
Fazendo
command1 & command2
wait
é equivalente a
command1 &
command2
wait
... que funcionará, mas command2
não será executado em segundo plano e wait
não será chamado até que command2
tenha terminado a execução.