Materi
Setiap perintah berakhir dengan kode keluar: 0 berarti berhasil, selain 0 berarti gagal atau tidak ditemukan. Kode perintah terakhir tersimpan di $?. grep berakhir 0 bila menemukan baris dan 1 bila tidak; perintah yang tidak ada berakhir 127; berkas yang tidak boleh dijalankan berakhir 126. Skrip memilih kodenya sendiri dengan exit N.
grep -q kasir /etc/group; echo $?
0
ls /opt/tidak-ada 2> /dev/null || echo "folder tidak ada"
folder tidak ada&& menjalankan perintah kanan hanya bila perintah kiri berhasil; || hanya bila gagal. if bekerja dengan cara yang sama: ia menjalankan perintah sesudah if, lalu memilih cabang then bila kodenya 0, dan cabang elif atau else bila bukan. Perintah yang paling sering ditaruh di situ adalah test, ditulis [ ... ] dengan spasi di dalam kurung.
| Uji | Benar bila |
|---|---|
| [ -f berkas ] | berkas biasa itu ada |
| [ -d folder ] | folder itu ada |
| [ -x berkas ] | berkas boleh dijalankan |
| [ -z "$A" ] | teks A kosong |
| [ "$A" = "$B" ] | kedua teks sama |
| [ $N -gt 5 ] | angka N lebih dari 5 (juga -eq -ne -lt -le -ge) |
| [ ! -f berkas ] | kebalikan: berkas itu tidak ada |
if [ -d /opt/kasir ]; then
echo "kasir terpasang"
else
echo "kasir belum dipasang" >&2
exit 3
fiAngka dibandingkan dengan -eq, -lt, -gt dan sejenisnya, sedangkan = dan != untuk teks. Kesalahan umum: [ $N > 5 ] tidak membandingkan angka; tanda > di situ mengalihkan keluaran ke berkas bernama 5. Kesalahan kedua: variabel kosong tanpa kutip membuat [ $A = x ] berubah menjadi [ = x ] dan menghasilkan unary operator expected; kutip variabelnya.