# \[Bash\] Récupération de l'exit status d'une commande

**URL:** <https://www.debian-fr.org/t/bash-recuperation-de-lexit-status-dune-commande/66265>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 9:44 UTC](https://www.debian-fr.org/t/bash-recuperation-de-lexit-status-dune-commande/66265 "2016-02-21T21:44:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![N3mesis98](https://www.debian-fr.org/user_avatar/www.debian-fr.org/n3mesis98/32/3002_2.png) [@N3mesis98](https://www.debian-fr.org/u/N3mesis98)\
**Post date:** [Février 21, 2016, 9:44 UTC](https://www.debian-fr.org/t/bash-recuperation-de-lexit-status-dune-commande/66265/1 "2016-02-21T21:44:51Z")

</div>

Bonjour à tous.

J’ai un script de sauvegarde automatique utilisant rsync qui a à peu près cette tête la :

[code]  
log="#log\_file"  
dest="#backup\_dir"  
sources=(  
#source1,  
#source2  
)

date \> "$log"  
for source in ${sources[\*]}; do  
rsync # 2\>&1 | sed # | tee -a "$log"  
done[/code]  
J’aimerais bien avoir une variable, à afficher à la fin du script, qui compte le nombre d’erreurs de rsync.  
En gros le nombre de fois que rsync renvoie un code d’erreur différent de 0.  
Normalement j’utilise la variable $? qui contient le retour de la dernière commande exécutée, mais la ça ne marche pas car entre temps j’ai aussi lancé sed et tee.

Est ce que quelqu’un aurait une idée permettant de contourner ce problème ?

---

<div class="post-metadata">

**Author:** ![N3mesis98](https://www.debian-fr.org/user_avatar/www.debian-fr.org/n3mesis98/32/3002_2.png) [@N3mesis98](https://www.debian-fr.org/u/N3mesis98)\
**Post date:** [Février 21, 2016, 9:44 UTC](https://www.debian-fr.org/t/bash-recuperation-de-lexit-status-dune-commande/66265/2 "2016-02-21T21:44:53Z")

</div>

Bon bah du coup j’ai réussi a trouver la solution avec une bonne dose de recherche.  
Il faut utiliser la variable [mono]$PIPESTATUS[/mono].  
C’est un array qui stocke les retour des différentes commandes exécutées sur une ligne.  
par exemple, [mono]#cmd1 | #cmd2 | #cmd3 ; echo ${PIPESTATUS[0]}[/mono] renverra le retour de #cmd1.

---

<div class="post-metadata">

**Author:** ![PengouinPdt](https://www.debian-fr.org/user_avatar/www.debian-fr.org/pengouinpdt/32/3978_2.png) [@PengouinPdt](https://www.debian-fr.org/u/PengouinPdt)\
**Post date:** [Février 21, 2016, 9:44 UTC](https://www.debian-fr.org/t/bash-recuperation-de-lexit-status-dune-commande/66265/3 "2016-02-21T21:44:54Z")

</div>

Ah, tiens !  
Tu viens de m’apprendre quelque chose qui me sera forcèment utile 😃

Merci
