Cara mendeteksi dan menangani kesalahan dalam skrip bash Anda

Cara mendeteksi dan menangani kesalahan dalam skrip bash Anda

Kita dapat menggunakan perintah trap untuk menangkap sistem sinyal kesalahan dengan sistem selama eksekusi skrip. Maka Anda dapat menjalankan perintah shell atau memanggil fungsi. Dengan cara ini, Anda dapat menjalankan kode skrip khusus Anda pada kesalahan yang terjadi dalam skrip bash.

Ini dapat membantu untuk mengembalikan perubahan parsial, menutup koneksi basis data, atau status email kepada orang -orang yang bersangkutan, dll. Anda dapat menggunakan perintah perangkap dengan 'BERBUAT SALAH' sinyal seperti:

jebakan 'on_error_function' err 

Saat kesalahan dihasilkan dalam skrip shell, itu akan menjalankan fungsi bernama 'on_error_function' dari skrip shell Anda. Alih -alih memanggil fungsi, Anda juga bisa menjalankan perintah.

Contoh: Jalankan fungsi pada kesalahan dalam bash

Mari kita pahami dengan sebuah contoh. Buat skrip shell sampel, dan buat fungsi dengan nama apa pun. Lalu tambahkan perangkap Perintah dengan fungsi untuk BERBUAT SALAH sinyal. Selanjutnya, tambahkan perintah sederhana yang menghasilkan kesalahan.

#!/usr/bin/env bash on_error () echo "Beberapa kesalahan terjadi" trap 'on_error' err ls ~/dir_not_exists
123456789#!/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: tidak dapat mengakses '/home/tecadmin/dir_not_exists': Tidak ada file atau direktori semacam itu beberapa kesalahan terjadi 

Anda dapat melihat bahwa kesalahan terperangkap dan fungsinya on_error () dieksekusi oleh skrip bash.

Contoh: Jalankan perintah pada kesalahan dalam bash

Mari kita lihat satu contoh lagi. Di sini kita akan menjalankan perintah saat kesalahan akan terjadi di skrip shell.

#!/usr/bin/env bash trap 'echo ohhh no!'Err ls ~/dir_not_exists
12345#!/usr/bin/env bash trap 'echo ohhh no!'Err ls ~/dir_not_exists

Dalam skrip di atas, kami tidak mendefinisikan fungsi yang terpisah. Cukup jalankan perintah gema saat kesalahan. Jalankan skrip di atas dan lihat hasilnya.

Output: ls: tidak dapat mengakses '/home/tecadmin/dir_not_exists': tidak ada file atau direktori seperti itu ohhh no! 

Contoh: Dapatkan garis kesalahan yang terjadi

Anda juga dapat mengetahui nomor baris, di mana kesalahan terjadi pada skrip bash bersama dengan nama skrip. Untuk melakukan ini gunakan 'penelepon' bash inbuilt.

#!/usr/bin/env bash on_error () echo "kesalahan ditemukan di: $ (penelepon)"> & 2 jebakan 'on_error' err ls ~/dir_not_exists
123456789#!/usr/bin/env bash on_error () echo "kesalahan ditemukan di: $ (penelepon)"> & 2 jebakan 'on_error' err ls ~/dir_not_exists

Jalankan skrip di atas dan lihat hasilnya. Anda akan melihat nama skrip dan nomor baris, di mana kesalahan terjadi.

Output: LS: Tidak dapat mengakses '/home/tecadmin/dir_not_exists': Tidak ada file atau kesalahan direktori yang ditemukan di: 9 ./naskah.SH 

Kesimpulan

Terima kasih telah membaca artikel ini. Semoga tutorial ini membantu Anda dengan penulisan skrip shell yang lebih baik dengan menangkap kesalahan dan mengambil beberapa tindakan.

Juga, ingatlah bahwa ERR Trap hanya menangkap kesalahan runtime saja. Seperti jika ada perintah yang mengembalikan kode status non-nol. Itu tidak menangkap kesalahan sintaks, karena dalam kasus kesalahan sintaks, skrip gagal tanpa menjalankan perintah apa pun.