ดังนั้นฉันจึงมีสคริปต์เล็กน้อยสำหรับการทดสอบบางอย่าง
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
เป็นที่ชื่นชอบของแฟน ๆ เสมอ