Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 roll

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" lol

Hors ligne