returncode команды в pipline

Следующий сценарий работает в Solaris с использованием / bin / ksh и в Linux с использованием / bin / sh

cmd | tee -a cmd.log | tail exit $? 

Результат cmd сохраняется в файле cmd.log, а последние строки отображаются на stdout .

Цель exit $? должен был выйти из сценария с кодом возврата cmd . Конечно, это

не работает, потому что $? содержит код возврата последней команды в конвейере, который является

tail .

Обходной путь (я опускаю все действия по очистке):

 { cmd; echo $? > error.file; } | tee -a cmd.log | tail exit `cat error.file` 

Но есть ли другой способ получить код возврата cmd и избежать создания файла, такого как error.file ?

Linux и Unix - лучшая ОС в мире.