[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