Итак, у меня есть небольшой скрипт для запуска некоторых тестов.
javac *.java && java -ea Test
rm -f *.class
Теперь проблема в том, что когда я запускаю скрипт ./test
, он вернет код успешного завершения, даже если тест не пройден из-за rm -f *.class
успеха.
Единственный способ заставить меня делать то, что я хочу, кажется мне уродливым:
javac *.java && java -ea Test
test_exit_code=$?
rm -f *.class
if [ "$test_exit_code" != 0 ] ; then false; fi
Но это похоже на обычную проблему - выполнить задачу, очистить, а затем вернуть код завершения исходной задачи.
Какой самый идиоматичный способ сделать это (в bash или просто в оболочках в целом)?
eval
всегда любимый фанатом.