Alasan untuk pola ini adalah bahwa skrip pengelola dalam paket Debian cenderung untuk memulai set -e
, yang menyebabkan shell keluar segera setelah perintah apa pun (secara tegas, pipa, daftar atau perintah majemuk) keluar dengan status bukan nol. Ini memastikan bahwa kesalahan tidak menumpuk: begitu ada masalah, skrip dibatalkan.
Dalam kasus di mana perintah dalam skrip dibiarkan gagal, menambahkan || true
memastikan bahwa perintah majemuk yang dihasilkan selalu keluar dengan status nol, sehingga skrip tidak dibatalkan. Misalnya, menghapus direktori seharusnya bukan kesalahan fatal (mencegah paket dihapus); jadi kami akan gunakan
rmdir ... || true
karena rmdir
tidak memiliki opsi untuk mengatakannya untuk mengabaikan kesalahan.
||:
adalah cara idiomatis lain untuk menulis ini (:
menjadi entri lain dalam tabel builtin menunjuk ketrue
- tetapi dijamin akan menjadi builtin bahkan kembali ke Bourne; yang mengatakan, untuk POSIX sh,true
juga dijamin menjadi builtin - jadi itu adalah lebih terseness daripada efisiensi bahkan di zaman modern sekalipun).