У меня есть скрипт, который компилирует программу. Эта программа сначала компилирует исходный код с помощью configure && make
команд, затем запускает некоторые тесты с помощью make test
. Этот скрипт также использует set -e
для перехвата ошибок.
Теперь, что я хочу сделать, это сохранить set -e
установку в скрипте и продолжать выполнять скрипт, когда он make test
сталкивается с некоторыми ошибками. Я пытался использовать make -k test
, чтобы заставить тесты запускаться даже при возникновении ошибок, но это перехватывается командой set -e
и останавливается.
Я также знаю, какие тесты не пройдут, так есть ли способ указать скрипту пропустить перехват этих ошибок?
решение1
make test || true
например
#!/bin/sh
set -e
echo hello
make test || true
echo done
Приведет к
hello
make: *** No rule to make target `test'. Stop.
done
В этом случае причиной сбоя было отсутствие правила (отсутствие Makefile :-)), но мы видим, что скрипт продолжает работу.
решение2
set -e
можно перевернуть с помощью set +e
.
#!/bin/sh
set -e
configure && make
set +e
make test
...