A variável de ambiente $PIPESTATUS
é uma matriz de status de saída para todos os processos em um pipeline.
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?
A variável de ambiente $PIPESTATUS
é uma matriz de status de saída para todos os processos em um pipeline.
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