info:bash:pipeline:code_retour

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
info:bash:pipeline:code_retour [2022/11/12 12:07] franckinfo:bash:pipeline:code_retour [2022/12/03 10:50] (Version actuelle) franck
Ligne 1: Ligne 1:
 ======Gérer les codes retours des commandes en pipelines====== ======Gérer les codes retours des commandes en pipelines======
-les pipelines en bash, rappel: Ils permettent d'enchainer des commandes en passant le résultat (stdout), **mais pas le code retour**, d'une commande a la suivante.+les pipelines en bash, rappel: Ils permettent d’enchaîner des commandes en passant le résultat (stdout), **mais pas le code retour**, d'une commande a la suivante.
 <code bash> <code bash>
 commande 1 | commande 2 | commande 3 .... commande 1 | commande 2 | commande 3 ....
Ligne 17: Ligne 17:
 PIPESTATUS[] se comporte comme un tableau bash.\\ PIPESTATUS[] se comporte comme un tableau bash.\\
 \\ \\
-A noter pour les exemples: "exit" permet de quitter un shell ou un sous-shell avec un code retour. Ne mettez pas cette commande en premier, sinon vous fermer le shell principale.Un pipe ouvre un sous-shell et la commande "exit" permet de quitter ce sous-shell créé par le pipe "|".\\+A noter pour les exemples: "exit" permet de quitter un shell ou un sous-shell avec un code retour. Hors la première commande d'un pipe s’exécute dans le shell courant. Si vous mettez exit, le shell courant est fermé et la suite du script n'est pas exécuté. Un pipe ouvre un sous-shell et la commande "exit" permet de quitter ce sous-shell créé par le pipe "|". Vous ne quittez donc pas le shell d'origine.\\
 \\ \\
 Pour la commande ci-dessous, la variable PIPESTATUS[0] renvoi le code retour de "true", soit 0 Pour la commande ci-dessous, la variable PIPESTATUS[0] renvoi le code retour de "true", soit 0
Ligne 28: Ligne 28:
 <code bash> <code bash>
 true | exit 10 | exit 20 | exit 30 | exit 40 | exit 50 | exit 60 true | exit 10 | exit 20 | exit 30 | exit 40 | exit 50 | exit 60
-echo "\${PIPESTATUS[0]}=${PIPESTATUS[4]}" +echo "\${PIPESTATUS[4]}=${PIPESTATUS[4]}" 
-${PIPESTATUS[0]}=40+${PIPESTATUS[4]}=40
 </code> </code>
 <code bash> <code bash>
Ligne 51: Ligne 51:
 0 11 22 33 44 55 66 0 11 22 33 44 55 66
 </code> </code>
- 
 =====option pipefail===== =====option pipefail=====
-les codes retours différents de 0 dans une ligne de commandes sont souvent un problème notamment dans les scripts ou dans les commandes Ansible.\\ +les codes retours différents de 0 d'une commande a l’intérieur d'un pipeline est souvent un problème notamment dans les scripts ou dans les commandes Ansible.\\ 
-L'option "pipefail" stop l’exécution du pipeline sur la commande en erreur, c'est a dire, lorsque le code retour d'une des commandes est différent de 0.\\+L'option "pipefail" stop/arrête l’exécution du pipeline sur la commande en erreur, c'est a dire, lorsque le code retour d'une des commandes est différent de 0.\\
 <code bash> <code bash>
 #!/usr/bin/env bash #!/usr/bin/env bash
Ligne 66: Ligne 65:
     printf "échec de la recherche\n"     printf "échec de la recherche\n"
 </code> </code>
-\\+
 ====pipefail dans une commande Ansible==== ====pipefail dans une commande Ansible====
 Dans une commande Ansible vous pouvez utiliser l'option en début de ligne, et elle sera valable pour toute la ligne.\\ Dans une commande Ansible vous pouvez utiliser l'option en début de ligne, et elle sera valable pour toute la ligne.\\
 Vous pouvez ainsi récupérer le code retour d'erreur du pipeline avec un arrêt de l’enchaînement des commandes par pipe sur la commande en erreur. par exemple: Vous pouvez ainsi récupérer le code retour d'erreur du pipeline avec un arrêt de l’enchaînement des commandes par pipe sur la commande en erreur. par exemple:
- 
 <code yaml> <code yaml>
 - name: Recuperer le nom de répertoire numérique de la version la plus élevé dans /opt/rep/nn/ - name: Recuperer le nom de répertoire numérique de la version la plus élevé dans /opt/rep/nn/
  • /home/franck/dokuwiki/doc/data/attic/info/bash/pipeline/code_retour.1668251268.txt.gz
  • Dernière modification : 2022/11/12 12:07
  • de franck