Vì vậy, tôi có một kịch bản nhỏ để chạy một số thử nghiệm.
javac *.java && java -ea Test
rm -f *.class
Bây giờ vấn đề với điều này là khi tôi chạy tập lệnh ./test
, nó sẽ trả về mã thoát thành công ngay cả khi thử nghiệm thất bại vì rm -f *.class
thành công.
Cách duy nhất tôi có thể nghĩ là khiến nó làm điều tôi muốn cảm thấy xấu xí với tôi:
javac *.java && java -ea Test
test_exit_code=$?
rm -f *.class
if [ "$test_exit_code" != 0 ] ; then false; fi
Nhưng điều này có vẻ như là một vấn đề phổ biến - thực hiện một nhiệm vụ, dọn dẹp, sau đó trả lại mã thoát của nhiệm vụ ban đầu.
Cách thành ngữ nhất để làm điều này (trong bash hoặc chỉ vỏ nói chung) là gì?
eval
luôn được người hâm mộ yêu thích.