Evite detectar errores en un script de shell

Evite detectar errores en un script de shell

Tengo un script que compila un programa. Este programa primero compila el código fuente usando configure && makecomandos y luego ejecuta algunas pruebas usando make test. Este script también se utiliza set -epara detectar errores.

Ahora, lo que quiero hacer es mantener set -ela configuración en el script y continuar ejecutándolo cuando make testencuentre algunos errores. Intenté usar make -k testpara ejecutar las pruebas incluso cuando encuentra errores, pero el set -ecomando lo detecta y se detiene.

También sé qué pruebas van a fallar, entonces, ¿hay alguna forma de decirle al script que omita detectar estos errores?

Respuesta1

make test || true

p.ej

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

Resultará en

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

En este caso, el error fue una regla faltante (sin Makefile :-)) pero podemos ver que el script continúa.

Respuesta2

set -ese puede voltear con set +e.

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

información relacionada