Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1125 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Gestion des erreurs dans une chaine de tubes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion des erreurs dans une chaine de tubes

n°1883799
mifinoufou
Posté le 12-05-2009 à 17:20:23  profilanswer
 

Bonjour,
 
J'ai un souci quant à l'utilisation d'un pipe entre deux commandes.
 
Je veux executer une commande en la redirigeant dans une autre : cmd1 | cmd2
 
D'après toutes les informations que j'ai trouvées et d'après mes tests, la valeur de retour de cette chaine de tube est la valeur de retour de la dernière commande donc cmd2 ici.
 
Ce que je voudrais c'est que si l'une des commandes constituant le tube termine en erreur, la valeur de retour globale soit une erreur. Dans l'exemple, si cmd2 se termine en erreur et cmd1 correctement, je voudrais que la valeur de retour globale soit une erreur.
 
Dans mon cas, je redirige la sortie standard de slapcat vers dd pour tester si l'ecriture se passe bien. En effet, slapcat ne renvoie pas d'erreur si il n'y a plus de place sur le disque et donc on ne peut pas savoir si le fichier a été correctement écrit. En redirigeant la sortie vers dd, je peux récupérer l'erreur d'ecriture cependant je ne peux pas savoir si slapcat s'est bien terminé ou si il s'est terminé en erreur.
 
Existe t il un moyen d'avoir ce comportement, à savoir si une commande dans la chaine de tubes est en erreur, le retour est une erreur ?
 
Je trouve étrange ce comportement du pipe. D'après moi, dans beaucoup de cas, les commandes pouvant vraiment se terminer en erreur sont à la première place (je ne pense pas qu'un tr, grep ou autre ait de grandes chances de ne pas faire ce qu'on leur demande...). L'utilisation du pipe rend donc impossible la gestion des erreurs ?  
 
Merci d'avance pour vos réponses

mood
Publicité
Posté le 12-05-2009 à 17:20:23  profilanswer
 

n°1883807
mifinoufou
Posté le 12-05-2009 à 17:30:49  profilanswer
 

J'ai oublié de préciser, le shell utilisé est sh.

n°1884300
mifinoufou
Posté le 13-05-2009 à 16:39:59  profilanswer
 

En bash, il est possible d'activer un flag pour qu'une chaine de tube échoue si l'une des commandes à l'interieur échoue => set -o pipefailed

n°1884321
Elmoricq
Modérateur
Posté le 13-05-2009 à 17:49:44  profilanswer
 

Ah, je le note celui-ci, je ne connaissais pas cette option. [:romf]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Gestion des erreurs dans une chaine de tubes

 

Sujets relatifs
Jeux des 7 erreurs[ksh] expression regulière sur longueur chaine
Gestion de la mémoire sous VistaProblème de gestion de stock sous excel 2007
(Débutant) Chaine de caractère : problème[Réglé](Regex) Récupération d'une chaîne située entre deux mots
Probleme de syntaxe pour envoyer une chaine vers une fonction javascriremplacement de chaine dans un nom de fichier.
[BATCH/Windows] Changer valeur d'une chaine dans la base de registre[Script] Piloter une application windows avec une gestion des erreurs
Plus de sujets relatifs à : Gestion des erreurs dans une chaine de tubes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR