![Überspringen des Abfangens von Fehlern in einem Shell-Skript](https://rvso.com/image/89179/%C3%9Cberspringen%20des%20Abfangens%20von%20Fehlern%20in%20einem%20Shell-Skript.png)
Ich habe ein Skript, das ein Programm kompiliert. Dieses Programm kompiliert zuerst den Quellcode mit configure && make
Befehlen und führt dann einige Tests mit aus make test
. Dieses Skript verwendet auch, set -e
um Fehler abzufangen.
Jetzt möchte ich die set -e
Einstellungen im Skript beibehalten und das Skript trotzdem weiter ausführen, wenn make test
Fehler auftreten. Ich habe versucht, make -k test
die Tests auch dann auszuführen, wenn Fehler auftreten, aber der set -e
Befehl 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 -e
kann mit umgedreht werden set +e
.
#!/bin/sh
set -e
configure && make
set +e
make test
...