Se você gostaria de saber se um comando foi bem-sucedido ou não, geralmente é necessário verificar seu código de saída. Zero indica sucesso, não-zero mostra falha.
Exemplo no shell:
gcc foo.c
rc=$? # Store exit code for later use
if [ $rc -ne 0 ]; then # $rc not equal to zero
echo "gcc exited with $rc"
fi
Você também pode usar &&
ou ||
para executar um comando sobre sucesso ou falha, respectivamente:
gcc foo.c && echo gcc succeeded
gcc foo.c || echo gcc failed
Como mencionado nos comentários, gcc foo.c | grep error
não detectou tudo porque um canal normalmente captura apenas a saída padrão (stdout). Os programas geralmente emitem mensagens excepcionais para o erro padrão (stderr). Para capturar esse fluxo, você precisa redirecionar o stderr para stdout antes de canalizar para grep
:
gcc foo.c 2>&1 | grep error
Ou, se você usar o bash
shell, poderá usar essa abreviação:
gcc foo.c |& grep error
Agora, esse gcc
gera um binário a.out
. Se você quiser apenas verificar os erros de sintaxe, use gcc -fsyntax-only foo.c
. Você pode então examinar na saída ou verificar seu código de saída para erros.