6 votes

Comment puis-je obtenir le code de sortie d'un processus qui est relié à tee ?

J'ai un code bash comme celui-ci (Mac OS X) :

foo.sh | tee foo.log echo $?

Le problème est que $ ? contient le code de sortie de tee et non le code de sortie de foo.sh. Comment puis-je obtenir le code de sortie de foo.sh ?

0 votes

7voto

Eduardo Costa Points 151

La variable d'environnement $PIPESTATUS est un tableau de statuts de sortie pour tous les processus dans un pipeline.

2 votes

Probablement pour la même raison qu'il y a un bouton pour "répondre à votre propre question".

0 votes

Patrick Je ne connaissais pas la réponse lorsque j'ai posé la question, mais j'ai creusé un peu plus et je l'ai trouvée.

3voto

Tom Maher Points 31

Utilisez également un subshell :

tm@hoegaarden:~$ cat foo.sh
#!/bin/bash

echo "stuff and junk"

exit 123
tm@hoegaarden:~$ (./foo.sh ; echo $? > ./retval ) | tee output
stuff and junk
tm@hoegaarden:~$ cat retval 
123

0 votes

C'est plus portable (pas spécifique à bash ) - d'où upvote.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X