Überspringen des Abfangens von Fehlern in einem Shell-Skript

Überspringen des Abfangens von Fehlern in einem Shell-Skript

Ich habe ein Skript, das ein Programm kompiliert. Dieses Programm kompiliert zuerst den Quellcode mit configure && makeBefehlen und führt dann einige Tests mit aus make test. Dieses Skript verwendet auch, set -eum Fehler abzufangen.

Jetzt möchte ich die set -eEinstellungen im Skript beibehalten und das Skript trotzdem weiter ausführen, wenn make testFehler auftreten. Ich habe versucht, make -k testdie Tests auch dann auszuführen, wenn Fehler auftreten, aber der set -eBefehl fängt sie ab und stoppt sie.

Ich weiß auch, welche Tests fehlschlagen werden. Gibt es also eine Möglichkeit, dem Skript mitzuteilen, dass diese Fehler nicht erkannt werden sollen?

Antwort1

make test || true

z.B

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

Wird darin enden, dass

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

In diesem Fall lag der Fehler an einer fehlenden Regel (kein Makefile :-)), aber wir können sehen, dass das Skript fortgesetzt wird.

Antwort2

set -ekann mit umgedreht werden set +e.

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

verwandte Informationen