เหตุผลสำหรับรูปแบบนี้คือสคริปต์ผู้ดูแลในแพ็คเกจ Debian มีแนวโน้มที่จะเริ่มต้นset -e
ซึ่งทำให้เชลล์ออกจากทันทีที่คำสั่งใด ๆ (พูดอย่างเคร่งครัดไปป์ไลน์รายชื่อหรือคำสั่งผสม) ออกด้วยสถานะที่ไม่เป็นศูนย์ สิ่งนี้ช่วยให้มั่นใจได้ว่าข้อผิดพลาดจะไม่เกิดขึ้น: ทันทีที่มีบางอย่างผิดพลาดสคริปต์จะยกเลิก
ในกรณีที่คำสั่งในสคริปต์ได้รับอนุญาตให้ล้มเหลวการเพิ่ม|| true
ให้แน่ใจว่าคำสั่งผสมที่เกิดขึ้นจะออกจากสถานะศูนย์เสมอดังนั้นสคริปต์จะไม่ยกเลิก ตัวอย่างเช่นการลบไดเรกทอรีไม่ควรเป็นข้อผิดพลาดร้ายแรง (ป้องกันไม่ให้แพคเกจถูกลบ); ดังนั้นเราจะใช้
rmdir ... || true
เนื่องจากrmdir
ไม่มีตัวเลือกที่จะบอกให้ละเว้นข้อผิดพลาด
||:
เป็นอีกวิธีหนึ่งในการเขียนแบบนี้ (:
เป็นอีกรายการในตาราง builtin ที่ชี้ไปที่true
- แต่รับประกันว่าจะเป็น builtin แม้กลับไปที่ Bourne ที่กล่าวว่าสำหรับ POSIX shtrue
ก็รับประกันได้ว่าจะเป็น builtin - ดังนั้นจึงเป็น ความทนทานยิ่งกว่าประสิทธิภาพในเวลาที่ทันสมัยแม้ในระยะไกล)