Пропустить перехват ошибок в скрипте оболочки

Пропустить перехват ошибок в скрипте оболочки

У меня есть скрипт, который компилирует программу. Эта программа сначала компилирует исходный код с помощью 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
...

Связанный контент