Ignorar a captura de erros em um script de shell

Ignorar a captura de erros em um script de shell

Eu tenho um script que compila um programa. Este programa primeiro compila o código-fonte usando configure && makecomandos e depois executa alguns testes usando make test. Este script também é usado set -epara detectar erros.

Agora, o que eu quero fazer é manter set -edefinido no script e continuar executando o script quando make testencontrar alguns erros. Tentei usar make -k testpara fazer os testes rodarem mesmo quando encontra erros, mas é capturado pelo set -ecomando e é interrompido.

Também sei quais testes irão falhar, então existe alguma maneira de dizer ao script para pular a captura desses erros.

Responder1

make test || true

por exemplo

#!/bin/sh
set -e
echo hello
make test || true
echo done

Vai resultar em

hello
make: *** No rule to make target `test'.  Stop.
done

Neste caso a falha foi uma regra faltante (sem Makefile :-)) mas podemos ver que o script continua.

Responder2

set -epode ser invertido com set +e.

#!/bin/sh
set -e
configure && make
set +e
make test
...

informação relacionada