[devel] Код возврата при конвейере
Alexey Rusakov
=?iso-8859-1?q?ktirf_=CE=C1_altlinux=2Eru?=
Вс Мар 6 20:39:13 MSK 2005
Dmitry V. Levin wrote:
>Hi,
>
>On Sun, Mar 06, 2005 at 02:15:40PM +0300, Vitaly Lipatov wrote:
>
>
>>Не могу понять, как узнать код возврата
>>программы при такой конструкции:
>>
>>программа | tea
>>
>>Подскажите пожалуйста.
>>
>>
>
>Кодом возврата pipeline'а является код возврата последней команды,
>поэтому узнать код возврата других команд можно, например, так:
>
>rm -f failed
>(программа || touch failed) | tea
>if [ -f failed ]; then
> обработка ошибки
>fi
>
>
При условии, что не требуется вывод tea писать в переменную, можно написать
RETVAL=`{ (программа ; echo $? >&5) | tea } 5>&1`
if [ $RETVAL ... ]; then
...
fi
Более громоздко, зато не требует наличия файловой системы вообще :)
--
Alexey "Ktirf" Rusakov
Подробная информация о списке рассылки Devel