оболочка Unix, получая код выхода с переданным по каналу дочерним элементом

Скажем, я делаю это в оболочке Unix

$ some-script.sh | grep mytext

$ echo $?

это даст мне код выхода grep

но как я могу получить код выхода some-script.sh

Править

Предположите, что операция канала неизменна. т.е., я не могу разбить его и выполнить две команды отдельно

7
задан Mike 17 May 2010 в 18:31
поделиться

2 ответа

Есть несколько решений, все зависит от того, что именно вы хотите сделать.

Самый простой и понятный способ - отправить результат в файл, а затем найти его с помощью команды grep после сохранения кода выхода:

tmpfile=$(mktemp)
./some-script.sh > $tmpfile
retval=$?
grep mytext $tmpfile
rm tmpfile
5
ответ дан 6 December 2019 в 19:34
поделиться

Если вы используете bash:

PIPESTATUS
    An array variable (see Arrays) containing a list of exit status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). 
2
ответ дан 6 December 2019 в 19:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: