ฉันกำลังเขียนสคริปต์ที่ต้องดำเนินการโดยใช้sourceเพราะหน้าที่ของมันคือการแก้ไขสภาพแวดล้อม ในระหว่างสคริปต์ฉันต้องการใช้set -eเพื่อให้ข้อผิดพลาดใด ๆ หยุดสคริปต์ สคริปต์มีลักษณะดังนี้:
#!/bin/bash
set -e
# do something
cd somewhere
source anotherScript
ปัญหาคือว่าset -eยังคงมีผลตามธรรมชาติหลังจากสคริปต์เสร็จสิ้น ฉันจะมั่นใจได้อย่างไรว่าsetตัวเลือกที่เปลี่ยนแปลงนั้นได้รับการคืนค่าอย่างเหมาะสมเมื่อสคริปต์หยุดทำงาน (ไม่ว่าด้วยวิธีใด - โดยการดำเนินการให้สำเร็จหรือเกิดข้อผิดพลาด)
-x/ xtraceตัวเลือก) ได้รับการแก้ไขที่การติดตามการเรียกใช้งานการปราบปรามสำหรับคำสั่ง echo หรือไม่