Назад | Перейти на главную страницу

Как мне получить код выхода для процесса, подключенного к тройнику?

У меня есть такой код на bash (Mac OS X):

foo.sh | tee foo.log echo $?

Проблема в том, что $? содержит код выхода tee, а не код выхода foo.sh. Как мне получить код выхода из foo.sh?

Переменная окружения $PIPESTATUS представляет собой массив статусов выхода для всех процессов в конвейере.

Также используйте подоболочку:

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