Also habe ich ein kleines Skript zum Ausführen einiger Tests.
javac *.java && java -ea Test
rm -f *.class
Das Problem dabei ist, dass beim Ausführen des Skripts ./test
ein erfolgreicher Beendigungscode zurückgegeben wird, selbst wenn der Test fehlschlägt, weil er rm -f *.class
erfolgreich ist.
Die einzige Möglichkeit, die ich mir vorstellen könnte, es dazu zu bringen, das zu tun, was ich will, ist für mich hässlich:
javac *.java && java -ea Test
test_exit_code=$?
rm -f *.class
if [ "$test_exit_code" != 0 ] ; then false; fi
Dies scheint jedoch ein häufiges Problem zu sein: Führen Sie eine Aufgabe aus, bereinigen Sie sie und geben Sie den Beendigungscode der ursprünglichen Aufgabe zurück.
Was ist die idiomatischste Art, dies zu tun (in Bash oder nur Muscheln im Allgemeinen)?
eval
ist immer ein Fanfavorit.