ฉันต้องการเรียกใช้โปรแกรมปฏิบัติการใน Linux และไม่ว่าสถานะการออกจะกลับมาหรือไม่ก็ตามฉันต้องการส่งคืนสถานะการออกที่ดี (เช่นไม่มีข้อผิดพลาด)
(นี่เป็นเพราะฉันใช้sh -ex
และฉันต้องการให้สคริปต์ทำงานต่อไปแม้ว่าคำสั่ง (เฉพาะ) จะล้มเหลว)
ฉันต้องการเรียกใช้โปรแกรมปฏิบัติการใน Linux และไม่ว่าสถานะการออกจะกลับมาหรือไม่ก็ตามฉันต้องการส่งคืนสถานะการออกที่ดี (เช่นไม่มีข้อผิดพลาด)
(นี่เป็นเพราะฉันใช้sh -ex
และฉันต้องการให้สคริปต์ทำงานต่อไปแม้ว่าคำสั่ง (เฉพาะ) จะล้มเหลว)
คำตอบ:
ลองดูสิ:
command || true
จากman bash
:
เชลล์ไม่ออกหากคำสั่งที่ล้มเหลวเป็นส่วนหนึ่งของรายการคำสั่งทันทีต่อจากคำว่า while หรือจนกว่าคำสำคัญส่วนหนึ่งของการทดสอบจะทำตามคำว่า if หรือ elif ที่สงวนไว้ส่วนหนึ่งของคำสั่งที่ดำเนินการในรายการ && หรือ⎪⎪ยกเว้น คำสั่งที่ตามหลัง && หรือ⎪⎪สุดท้ายคำสั่งใด ๆ ในไปป์ไลน์ แต่สุดท้ายหรือถ้าค่าส่งคืนของคำสั่งกลับด้านด้วย!
ลอง(executable ; exit 0)
หรืออีกทางเลือกหนึ่งห่อในเชลล์สคริปต์ที่ออกจาก 0 เสมอ
(cd foo; exit 0)
สำเร็จคุณจะไม่ลงเอยด้วย "foo" หลังจากนั้นเนื่องจาก cwd ของคุณถูกส่งกลับไปยังที่อยู่ก่อนหน้านี้ อย่างไรก็ตามcd foo || true
จะทำให้คุณอยู่ใน "foo" หากประสบความสำเร็จ