Comment exécuter un processus en arrière-plan en fonction d’un indicateur dans ksh

Dans KSH, je veux exécuter plusieurs commandes exécutées en parallèle ou séquentiellement en arrière-plan, en fonction d’un drapeau.

Donc, si le FLAG est vrai, il fonctionnera comme ceci:

command1 & command2 & command3 & command4 & command5 & command6 & wait command7 

Mais si le drapeau est faux, je dois exécuter séquentiellement command1, command2 et command3. Mais cela ne devrait pas avoir d’impact sur l’exécution des commandes: command4, command5 et command6 en tant que lots parallèles eux-mêmes. Donc, si le drapeau est faux:

 (command1; command2; command3;) & (command4; command5; command6;) & wait command7 

Je pourrais peut-être y arriver en utilisant if-elses, mais y a-t-il une meilleure façon plus correcte de le faire?

J’utilise ksh88 sous Solaris 10.

Il n’y a pas d’indicateur spécifique au shell qui permettrait de regrouper automatiquement les commandes dans les lots d’arrière-plan. Voici comment cela peut être fait avec une construction simple case/esac :

 case "$flag" in (true) command1 & command2 & command3 & command4 & command5 & command6 & true ;; (false) { command1; command2; command3; } & { command4; command5; command6; } & true ;; (*) echo "Unexpected flag: [$flag]" false ;; esac && { wait command7 }