Apa itu kode keluar
Setiap skrip, perintah, atau biner keluar dengan kode kembali. Anda dapat melihat nilai ini dalam variabel khusus $? . Kode pengembalian adalah numerik dan dibatasi antara 0-255 karena bilangan bulat 8-bit yang tidak ditandatangani digunakan. Jika Anda menggunakan nilai -1, itu akan mengembalikan 255. Setiap eksekusi diakhiri dengan kode keluar, apakah berhasil atau tidak, dengan pesan kesalahan atau diam-diam. Misalnya:
$ date ; echo $? Sat Jan 18 08:06:07 IST 2020 0
Seperti yang Anda lihat, kode keluar adalah 0 karena perintah dijalankan tanpa masalah. Sekarang, mari kita coba ini:
$ wrngcmd ; echo $? -bash: wrngcmd: command not found 127
Ini adalah perintah yang tidak ditemukan karena kami baru saja mengetik sekumpulan karakter yang tidak berarti.
Kode Keluar Bash yang Dicadangkan
Sangat mirip dengan kode keluar "0" yang menunjukkan keberhasilan perintah, bash memiliki beberapa kode keluar yang dicadangkan untuk situasi yang berbeda. Jadi idealnya jika Anda menggunakan perintah keluar dalam skrip dan perlu menentukan kode keluar, jangan gunakan kode keluar yang dicadangkan ini karena dapat membuat hasil yang bertentangan.
Nomor Kode Keluar | Artinya | Contoh | Komentar |
---|---|---|---|
1 | Tangkap untuk kesalahan umum | biarkan “var1 =1/0” | Kesalahan lain, seperti “bagi dengan nol” dan operasi lain yang tidak diizinkan |
2 | Penyalahgunaan shell bawaan | fungsi_kosong() {} | Kata kunci atau perintah tidak ada |
126 | Perintah yang dipanggil tidak dapat dijalankan | /dev/null | Masalah izin atau perintah tidak dapat dieksekusi |
127 | “perintah tidak ditemukan” | ilegal_command | Kemungkinan masalah dengan $PATH atau salah ketik |
128 | Argumen tidak valid untuk keluar | keluar 3.14159 | keluar hanya membutuhkan argumen bilangan bulat dalam rentang 0 – 255 (lihat catatan kaki pertama) |
128 +n | Sinyal kesalahan fatal “n” | bunuh -9 $PPID skrip | $? mengembalikan 137 (128 + 9) |
130 | Script diakhiri oleh Control-C | Ctrl-C | Kontrol-C adalah sinyal kesalahan fatal 2, (130 =128 + 2, lihat di atas) |
255* | Keluar status di luar jangkauan | keluar -1 | keluar hanya membutuhkan argumen bilangan bulat dalam rentang 0 – 255 |
Mari kita pahami kode keluar "128 +n" dengan sebuah contoh. Jalankan loop tanpa akhir seperti yang ditunjukkan di bawah ini:
#!/bin/bash while true; do echo ${$} done
Jika Anda menjalankan skrip ini, ia akan mencetak PID yang sama tanpa batas waktu hingga Anda mematikannya atau melakukan "CTRL+C". Coba lakukan “CTRL+C” dan lihat apa kode keluarnya.
# sh test.sh .... 2582 2582 2582 2582 2582 2582 ^C geeklab$ echo $? 130
Seperti yang Anda lihat kode keluarnya adalah "128+2" yaitu 130. Demikian pula jika kita mematikan skrip menggunakan "kill -9" kode keluarnya harus "128+9" yaitu 137. Mari kita lihat contohnya juga:
# sh test.sh .... 2582 2582 2582 ...
# kill -9 [pid_of_script]
.... 2602 2602 Killed: 9 geeklab$ echo $? 137