Os comandos dentro de cada grupo são executados em paralelo, e os grupos são executados sequencialmente, cada grupo de comandos paralelos esperando que o grupo anterior termine antes de iniciar a execução.
O seguinte é um exemplo de trabalho:
Suponha 3 grupos de comandos como no código abaixo. Em cada grupo, os três comandos são iniciados em segundo plano com &
.
Os 3 comandos serão iniciados quase ao mesmo tempo e serão executados em paralelo, enquanto o script waits
será concluído.
Depois que todos os três comandos no terceiro grupo saírem, command 10
será executado.
$ cat command_groups.sh
#!/bin/sh
command() {
echo $1 start
sleep $(( $1 & 03 )) # keep the seconds value within 0-3
echo $1 complete
}
echo First Group:
command 1 &
command 2 &
command 3 &
wait
echo Second Group:
command 4 &
command 5 &
command 6 &
wait
echo Third Group:
command 7 &
command 8 &
command 9 &
wait
echo Not really a group, no need for background/wait:
command 10
$ sh command_groups.sh
First Group:
1 start
2 start
3 start
1 complete
2 complete
3 complete
Second Group:
4 start
5 start
6 start
4 complete
5 complete
6 complete
Third Group:
7 start
8 start
9 start
8 complete
9 complete
7 complete
Not really a group, no need for background/wait:
10 start
10 complete
$