#1 Le 19/07/2012, à 21:52
- toulipe
[résolu par le hasard] $PIPESTATUS ne m'a pas à la bonne...
Bonjour à tous,
Dans un petit script que j'écris à l'aide de mes maigres connaissances en bash, j'essaie de vérifier que l'archivage de mes fichiers s'est bien déroulé en utilisant $PIPESTATUS. Le code ressemble à ça :
tar -czvg $TARLISTINCREMENTAL -f - -T $LISTEFICHIERS 2> $LOGSAUVEGARDE | split -db 50m - "$REPERTOIRECIBLE/$IDBACKUP."
echo "${PIPESTATUS[*]}" >> $LOGSAUVEGARDE
if [ "$(echo ${PIPESTATUS[*]})" = "0 0" ]
then echo "Compression : OK" >> $LOGSAUVEGARDE
else echo "Compression : KO" >> $LOGSAUVEGARDE
# quelques commandes...
fi
Or à chaque fois que je lance le script, et même quand tar ne fait pas des siennes, je récupère toujours un "Compression : KO" dans $LOGSAUVEGARDE. La fin du fichier est toujours
0 0
Compression : KO
J'avoue être perplexe
Dernière modification par toulipe (Le 19/07/2012, à 22:48)
Hors ligne
#2 Le 19/07/2012, à 22:00
- Kooothor
Re : [résolu par le hasard] $PIPESTATUS ne m'a pas à la bonne...
Déjà est-ce que t'es sûr que ton echo $PIPESTATUS te donne "0 0" quand tout se passe bien ?
Hors ligne
#3 Le 19/07/2012, à 22:17
- toulipe
Re : [résolu par le hasard] $PIPESTATUS ne m'a pas à la bonne...
Oui, absolument. Je récupère dans le fichier $LOGSAUVEGARDE la liste des fichiers qui ont été archivés par tar, avec en plus les messages d'erreur de ce dernier, s'il y en a ; mais, même quand tout se passe bien - je veux dire, quand tar ne se plaint pas pour une raison ou pour un autre -, j'obtiens le même résultat.
Dernière modification par toulipe (Le 19/07/2012, à 22:17)
Hors ligne
#4 Le 19/07/2012, à 22:45
- toulipe
Re : [résolu par le hasard] $PIPESTATUS ne m'a pas à la bonne...
Bon, en fait je viens de réaliser que j'ai écrit des bêtises : le
echo "${PIPESTATUS[*]}" >> $LOGSAUVEGARDE
, que j'avais noté là pour vérifier la valeur de $PIPESTATUS alors que j'obtenais déjà quelques erreurs, annule nécessairement la vérification qui a lieu juste après, puisque cette dernière se base sur la valeur de la ligne précédente, où il n'y a justement pas de pipe...
J'ai corrigé mon erreur, et ça a l'air de refonctionner, mais quand à savoir pourquoi, avant de noter la ligne fautive, ça n'allait pas, alors là je sais pas.
Je passe le sujet en "résolu par le hasard"
Hors ligne