Então, eu tenho um pequeno script para executar alguns testes.
javac *.java && java -ea Test
rm -f *.class
Agora, o problema é que, quando eu executo o script ./test
, ele retornará um código de saída com êxito, mesmo que o teste falhe porque rm -f *.class
é bem-sucedido.
A única maneira de pensar em fazê-lo fazer o que quero me parece feia:
javac *.java && java -ea Test
test_exit_code=$?
rm -f *.class
if [ "$test_exit_code" != 0 ] ; then false; fi
Mas isso parece um problema comum - execute uma tarefa, limpe e retorne o código de saída da tarefa original.
Qual é a maneira mais idiomática de fazer isso (no bash ou apenas conchas em geral)?
eval
é sempre um favorito dos fãs.