Quindi ho una piccola sceneggiatura per l'esecuzione di alcuni test.
javac *.java && java -ea Test
rm -f *.class
Ora il problema è che quando eseguo lo script ./test
, verrà restituito un codice di uscita riuscito anche se il test fallisce perché ha esito rm -f *.class
positivo.
L'unico modo in cui potrei pensare di farlo fare ciò che voglio è brutto per me:
javac *.java && java -ea Test
test_exit_code=$?
rm -f *.class
if [ "$test_exit_code" != 0 ] ; then false; fi
Ma questo sembra essere un problema comune: eseguire un'attività, ripulire, quindi restituire il codice di uscita dell'attività originale.
Qual è il modo più idiomatico di farlo (in bash o solo conchiglie in generale)?
eval
è sempre il preferito dai fan.