Скажем, я делаю это в оболочке Unix
$ some-script.sh | grep mytext
$ echo $?
это даст мне код выхода grep
но как я могу получить код выхода some-script.sh
Править
Предположите, что операция канала неизменна. т.е., я не могу разбить его и выполнить две команды отдельно
Есть несколько решений, все зависит от того, что именно вы хотите сделать.
Самый простой и понятный способ - отправить результат в файл, а затем найти его с помощью команды grep после сохранения кода выхода:
tmpfile=$(mktemp)
./some-script.sh > $tmpfile
retval=$?
grep mytext $tmpfile
rm tmpfile
Если вы используете 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).