Kita dapat menggunakan perintah trap untuk menangkap sistem sinyal kesalahan oleh sistem selama eksekusi skrip. Kemudian Anda dapat menjalankan perintah shell atau memanggil suatu fungsi. Dengan cara ini, Anda dapat mengeksekusi kode skrip kustom Anda pada kesalahan yang terjadi di skrip bash.
Ini dapat membantu untuk mengembalikan perubahan sebagian, menutup koneksi database, atau status email ke orang yang bersangkutan, dll. Anda dapat menggunakan perintah trap dengan sinyal ERR seperti:
trap `on_error_function` ERR
Ketika kesalahan dibuat dalam skrip shell, itu akan menjalankan fungsi bernama `on_error_function` dari skrip shell Anda. Alih-alih memanggil fungsi, Anda dapat menjalankan perintah juga.
Contoh: Jalankan fungsi pada Kesalahan di Bash
Mari kita pahami dengan sebuah contoh. Buat contoh skrip shell, dan buat fungsi dengan nama apa pun. Kemudian tambahkan perintah trap dengan fungsi untuk sinyal ERR. Selanjutnya, tambahkan perintah sederhana yang menghasilkan error.
#!/usr/bin/env bash on_error(){ echo “Some error happen” } trap `on_error` ERR ls ~/dir_not_exists123456789#!/usr/bin/env bash on_error(){ echo “Beberapa kesalahan terjadi”} trap `on_error` ERR ls ~/dir_not_exists
Jalankan skrip di atas dan Anda akan melihat hasilnya di bawah ini:
Output: ls: can access `/home/tecadmin/ dir_not_exists`: Tidak ada file atau direktori seperti itu Beberapa kesalahan terjadi
Anda dapat melihat bahwa kesalahan terjebak dan fungsi on_error() dijalankan oleh skrip bash.
Contoh: Jalankan perintah pada Kesalahan di Bash
Mari kita lihat satu contoh lagi. Di sini kita akan menjalankan perintah ketika akan terjadi kesalahan pada skrip shell.
#!/usr/bin/env bash trap `echo Ohhh no!` ERR ls ~/dir_not_exists12345#!/usr/bin/env bash trap `echo Ohhh tidak!` ERR ls ~/dir_not_exists
Dalam skrip di atas, kami tidak mendefinisikan fungsi terpisah apa pun. Cukup jalankan perintah echo pada kesalahan. Jalankan skrip di atas dan lihat hasilnya.
Output: ls: can access `/home/tecadmin/dir_not_exists`: No such file or directory Ohhh no!
Contoh: Dapatkan nomor baris kesalahan yang terjadi
Anda juga dapat mengetahui nomor baris, di mana kesalahan terjadi pada skrip bash beserta nama skripnya. Untuk melakukan ini, gunakan bash `caller`.
#!/usr/bin/env bash on_error(){ echo “Kesalahan ditemukan di: $(caller)” >&2 } trap `on_error` ERR ls ~/dir_not_exists123456789#! /usr/bin/env bash on_error(){ echo “Error found in: $(caller)” >&2} trap `on_error` ERR ls ~/dir_not_exists
Jalankan skrip di atas dan lihat hasilnya. Anda akan melihat nama skrip dan nomor baris, tempat kesalahan terjadi.
Output: ls: can access `/home/tecadmin/dir_not_exists`: No such file or directory Error found in: 9 ./ script.sh
Conclusion
Terima kasih telah membaca artikel ini. Semoga tutorial ini membantu Anda menulis skrip shell dengan lebih baik dengan menangkap kesalahan dan mengambil beberapa tindakan.
Juga, ingat bahwa perangkap ERR hanya menangkap kesalahan runtime. Seperti jika ada perintah yang mengembalikan kode status bukan nol. Itu tidak menangkap kesalahan sintaks, karena dalam kasus kesalahan sintaks, skrip gagal tanpa menjalankan perintah apa pun.
Referensi tecadmin.com