O 'install' do Homebrew está alertando sobre um erro?

0

Ao usar o comando brew install foo com foo já instalado, retorna

Warning: foo-3.5.2 already installed

Isso é tecnicamente um erro, como stderr, ou esta mensagem é simplesmente stdout? Não está especificado na documentação. Eu pergunto porque eu tenho um script que diz:

#!/bin/bash
brew install foo
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
fi

(É um script simples para me ajudar a aprender se - então condicionais - não julgar!) Cada vez que eu executo, o script retorna OK em conjunto com o Warning acima. Isso sugeriria que o aviso não é um erro / falha, certo?

    
por grad student 02.10.2015 / 21:43

1 resposta

1

Isso soa como um aviso sendo impresso pelo aplicativo brew, mas o bash não está ciente de um erro. Se o bash o vê como um erro, depende se o aplicativo o envia ao fluxo de erros ou ao fluxo de saída e qual é o código de saída. Como você está obtendo OK retornado do seu script, o bash acha que o comando está retornando 0, o que significa que o comando bash foi executado com êxito. Portanto, brew deve enviar avisos desse tipo para stdout, em vez de stderr.

Você está ciente de como usar 2 > redirecionar o stderr para um arquivo? Você pode redirecionar stderr (2) e stdout ao executar seu script para dois arquivos diferentes. Então você pode ver em qual fluxo o aviso é impresso.

./script.sh > stdout.txt 2> stderr.txt
    
por 02.10.2015 / 22:44