Como obtenho o código de saída de um processo que é canalizado para tee?

6

Eu tenho código bash como este (Mac OS X):

foo.sh | tee foo.log echo $?

O problema é que $? contém o código de saída do tee e não o código de saída do foo.sh. Como obtenho o código de saída de foo.sh?

    
por bluesmoon 12.08.2012 / 20:30

2 respostas

7

A variável de ambiente $PIPESTATUS é uma matriz de status de saída para todos os processos em um pipeline.

    
por 12.08.2012 / 20:36
2

Use também um 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
    
por 12.08.2012 / 20:39