J'ai un script comprenant plusieurs commandes. Comment regrouper des commandes à exécuter ensemble (je souhaite créer plusieurs groupes de commandes. Dans chaque groupe, les commandes doivent s'exécuter en parallèle (en même temps). Les groupes doivent s'exécuter séquentiellement, en attendant qu'un groupe se termine avant de démarrer le groupe suivant) ... ie
#!/bin/bash
command #1
command #2
command #3
command #4
command #5
command #6
command #7
command #8
command #9
command #10
comment puis-je exécuter toutes les 3 commandes ensemble? J'ai essayé:
#!/bin/bash
{
command #1
command #2
command #3
} &
{
command #4
command #5
command #6
} &
{
command #7
command #8
command #9
}&
command #10
Mais cela n'a pas fonctionné correctement (je veux exécuter les groupes de commandes en parallèle en même temps. Je dois également attendre que le premier groupe se termine avant d'exécuter le groupe suivant)
Le script se termine avec un message d'erreur!
Réponses:
Les commandes de chaque groupe s'exécutent en parallèle et les groupes s'exécutent de manière séquentielle, chaque groupe de commandes parallèles attendant la fin du groupe précédent avant de démarrer l'exécution.
Voici un exemple pratique:
Supposons 3 groupes de commandes comme dans le code ci-dessous. Dans chaque groupe, les trois commandes sont lancées en arrière-plan avec
&
.Les 3 commandes seront lancées presque en même temps et exécutées en parallèle pendant que le script
waits
se termine.Après les trois commandes du troisième groupe, la sortie
command 10
s'exécutera.la source
Devrait fonctionner (chaque composant triplet individuel fonctionnera séquentiellement, mais les groupes hte fonctionneront en parallèle). Vous ne voulez probablement pas que votre shell parent se termine avant la fin des groupes - d'où le
wait
.la source
wait
.