Lý do cho mẫu này là các tập lệnh bảo trì trong các gói Debian có xu hướng bắt đầu set -e
, khiến cho trình bao thoát ra ngay khi bất kỳ lệnh nào (nói đúng, đường ống, danh sách hoặc lệnh ghép) thoát ra với trạng thái khác không. Điều này đảm bảo rằng các lỗi không tích lũy: ngay khi có sự cố xảy ra, tập lệnh sẽ hủy bỏ.
Trong trường hợp một lệnh trong tập lệnh được phép thất bại, việc thêm || true
đảm bảo rằng lệnh ghép kết quả luôn thoát với trạng thái 0, vì vậy tập lệnh không hủy bỏ. Ví dụ: xóa thư mục không phải là lỗi nghiêm trọng (ngăn gói bị xóa); vì vậy chúng tôi sẽ sử dụng
rmdir ... || true
vì rmdir
không có tùy chọn để bảo nó bỏ qua lỗi.
||:
là một cách khác để thành ngữ của văn bản này (:
là một mục khác trong bảng BUILTIN trỏ đếntrue
- nhưng đảm bảo là một BUILTIN thậm chí trở lại Bourne; mà nói, đối với POSIX sh,true
là tương tự như vậy đảm bảo được một dựng sẵn - vì vậy nó căng thẳng hơn hiệu quả trong thời gian thậm chí từ xa-hiện đại).