Untuk perkiraan pertama, 0 adalah sukses, bukan nol adalah kegagalan, dengan 1 adalah kegagalan umum, dan apa pun yang lebih besar dari satu adalah kegagalan spesifik. Selain pengecualian sepele dari pengujian salah, yang keduanya dirancang untuk memberikan 1 untuk keberhasilan, ada beberapa pengecualian lain yang saya temukan.
Lebih realistis, 0 berarti berhasil atau mungkin gagal, 1 berarti kegagalan umum atau mungkin berhasil, 2 berarti kegagalan umum jika 1 dan 0 keduanya digunakan untuk sukses, tetapi mungkin berhasil juga.
Perintah diff memberikan 0 jika file yang dibandingkan adalah identik, 1 jika mereka berbeda, dan 2 jika biner berbeda. 2 juga berarti kegagalan. Perintah less memberi 1 untuk kegagalan kecuali jika Anda gagal memberikan argumen, dalam hal ini, ia keluar 0 meskipun gagal.
Perintah lebih banyak dan perintah ejaan memberikan 1 untuk kegagalan, kecuali kegagalan itu adalah hasil dari izin yang ditolak, file tidak ada, atau upaya untuk membaca direktori. Dalam semua kasus ini, mereka keluar 0 meskipun gagal.
Kemudian perintah expr memberikan 1 untuk sucess kecuali outputnya adalah string kosong atau nol, dalam hal ini, 0 adalah sucess. 2 dan 3 adalah kegagalan.
Lalu ada kasus di mana keberhasilan atau kegagalan bersifat ambigu. Ketika grep gagal menemukan pola, ia keluar 1, tetapi keluar 2 untuk kegagalan asli (seperti izin ditolak). Klist juga keluar 1 ketika gagal menemukan tiket, meskipun ini sebenarnya bukan kegagalan daripada ketika grep tidak menemukan pola, atau ketika Anda ls direktori kosong.
Jadi, sayangnya, kekuatan unix yang tampaknya tidak memberlakukan seperangkat aturan logis, bahkan pada executable yang sangat umum digunakan.