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 }