Как проверить выход, если используется тройник? - PullRequest
4 голосов
/ 23 февраля 2012

Я пытаюсь использовать тройник, чтобы сохранить вывод в файл как:

myapp | tee log.txt

Но у меня проблема с проверкой выхода. Предыдущий код:

myapp 
if [ $? -eq 0 ] 
then .....

Но $? будет выход из ти! Возможно ли поймать выход из myapp? Спасибо.

Ответы [ 3 ]

5 голосов
/ 23 февраля 2012

Для bash есть удобный специальный массив: PIPESTATUS.Код возврата для myapp будет в $ {PIPESTATUS [0]} и т. Д.

zsh имеет примерно идентичный метод.делайте это в строгих оболочках Борна, о которых вы можете прочитать в FAQ по comp.unix.shell .

4 голосов
/ 23 февраля 2012

Использование PIPESTATUS

myapp | tee log.txt
if [ $PIPESTATUS[0] -eq 0 ] 
then .....
0 голосов
/ 23 февраля 2012

вместо этого вы можете перенаправить вывод в файл:

$ myapp > log.txt
...