Тож у мене є невеликий сценарій для запуску деяких тестів.
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
Але це здається чимось поширеною проблемою - виконайте завдання, очистіть, а потім поверніть вихідний код вихідного завдання.
Який самий ідіоматичний спосіб зробити це (в основному, або просто снарядів)?
eval
завжди улюбленець шанувальників.