Cara mendeteksi dan menangani kesalahan dalam skrip bash Anda
- 3808
- 196
- Dr. Travis Bahringer
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.
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_exists12345 | #!/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_exists123456789 | #!/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.
- « Menjalankan beberapa perintah sekaligus di Linux
- (Diselesaikan) Collation UTF8MB4_Unicode_520_ci yang tidak diketahui »