Bash: รันไฟล์เรียกทำงานที่ให้สถานะการออกดี


32

ฉันต้องการเรียกใช้โปรแกรมปฏิบัติการใน Linux และไม่ว่าสถานะการออกจะกลับมาหรือไม่ก็ตามฉันต้องการส่งคืนสถานะการออกที่ดี (เช่นไม่มีข้อผิดพลาด)

(นี่เป็นเพราะฉันใช้sh -exและฉันต้องการให้สคริปต์ทำงานต่อไปแม้ว่าคำสั่ง (เฉพาะ) จะล้มเหลว)

คำตอบ:


47

ลองดูสิ:

command || true

จากman bash:

เชลล์ไม่ออกหากคำสั่งที่ล้มเหลวเป็นส่วนหนึ่งของรายการคำสั่งทันทีต่อจากคำว่า while หรือจนกว่าคำสำคัญส่วนหนึ่งของการทดสอบจะทำตามคำว่า if หรือ elif ที่สงวนไว้ส่วนหนึ่งของคำสั่งที่ดำเนินการในรายการ && หรือ⎪⎪ยกเว้น คำสั่งที่ตามหลัง && หรือ⎪⎪สุดท้ายคำสั่งใด ๆ ในไปป์ไลน์ แต่สุดท้ายหรือถ้าค่าส่งคืนของคำสั่งกลับด้านด้วย!


ยังเป็นคนดี :)
voretaq7

1

ลอง(executable ; exit 0)หรืออีกทางเลือกหนึ่งห่อในเชลล์สคริปต์ที่ออกจาก 0 เสมอ


1
วิธีนี้ใช้งานได้ดีสำหรับกรณีส่วนใหญ่ แต่ตั้งค่า subshell ดังนั้นหาก(cd foo; exit 0)สำเร็จคุณจะไม่ลงเอยด้วย "foo" หลังจากนั้นเนื่องจาก cwd ของคุณถูกส่งกลับไปยังที่อยู่ก่อนหน้านี้ อย่างไรก็ตามcd foo || trueจะทำให้คุณอยู่ใน "foo" หากประสบความสำเร็จ
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

ข้อดี - หากกระบวนการของคุณมีผลข้างเคียงเพิ่มเติม (การตั้งค่าตัวแปรสภาพแวดล้อมการเปลี่ยนไดเรกทอรี ฯลฯ ) สิ่งนี้จะไม่ได้ผล
voretaq7
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.