Verifique a falha do comando canalizado [duplicate]

1

Se eu canalizar a saída de um comando para outro, existe uma maneira de eu verificar explicitamente se o primeiro comando falhou?

Por exemplo, se prog processa um arquivo e sai para STDOUT:

prog file1 | cmp - file2

existe uma maneira de verificar se prog falhou explicitamente ou foi bem-sucedido (por código de retorno)? Eu quero evitar o uso de arquivos temporários e não quero confiar na saída do segundo comando; Portanto, para o exemplo acima, quero evitar examinar a saída de cmp para determinar se prog falhou (se não houver uma resposta afirmativa para a minha pergunta, voltarei a fazer precisamente isso).

    
por Zorawar 01.06.2012 / 21:35

1 resposta

2

Você quer set -o pipefail .

Na página de manual do Bash:

pipefail

If set, the return value of a  pipeline  is  the value  of
the  last (rightmost) command to exit with a non-zero status,
or zero if all  commands in  the pipeline exit successfully.
This option is disabled by default.
    
por 01.06.2012 / 21:49