Je voudrais savoir s'il est possible de ne traiter un pipe que si la commande qui le précède a réussi.
Ce que je voudrais faire ressemble à cela :
( grep chaîne fichier1 || grep chaîne fichier2 ) | cut || echo "non trouvé"
Mon problème est que le cut fonctionnant toujours, même si aucun des grep n'a trouvé la chaîne, le message "non trouvé" n'est jamais affiché...
Existe-t-il un moyen d'écrire ça ou dois-je revoir ma façon de faire ?
Merci !
# essaye avec grep
Posté par fearan . Évalué à 1.
grep revoie une erreure s'il ne trouve pas de ligne correspondante... donc avec cette syntaxe, s'il y a au moins un caractere dans résultat, le retour est vrai ^^
bon y a surement un moyen plus élégant, mais j'ai pas toutes mes docs sous la main ^^
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: essaye avec grep
Posté par Maxime . Évalué à 1.
Merci :)
# PIPESTATUS
Posté par tgl . Évalué à 2.
Pour faire un "cmd1 | cmd2" suivi d'un test sur le retour de cmd1, tu peux écrire :
cmd1 | cmd2
[[ $PIPESTATUS[0] == 0 ]] || echo "cmd1 a echoué"
[^] # Re: PIPESTATUS
Posté par Maxime . Évalué à 1.
En revanche je n'arrive à y accéder que de cette façon :
${PIPESTATUS[0]}
[^] # Re: PIPESTATUS
Posté par tgl . Évalué à 2.
> ${PIPESTATUS[0]}
Oops, oui bien sûr, typo...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.