Cara Mengesan dan Mengendalikan Kesalahan dalam Skrip Bash Anda

Cara Mengesan dan Mengendalikan Kesalahan dalam Skrip Bash Anda

Kita boleh menggunakan perintah perangkap untuk menangkap sistem isyarat ralat oleh sistem semasa pelaksanaan skrip. Kemudian anda boleh melaksanakan arahan shell atau memanggil fungsi. Dengan cara ini, anda boleh melaksanakan kod skrip tersuai anda pada ralat yang berlaku dalam skrip bash.

Ini boleh membantu untuk mengembalikan sebarang perubahan separa, menutup sambungan pangkalan data, atau status e -mel kepada orang yang bersangkutan, dll. Anda boleh menggunakan perintah perangkap dengan 'Err' isyarat seperti:

perangkap 'on_error_function' err 

Apabila ralat dihasilkan dalam skrip shell, ia akan melaksanakan fungsi bernama 'on_error_function' dari skrip shell anda. Daripada memanggil fungsi, anda juga boleh menjalankan arahan.

Contoh: Jalankan fungsi pada ralat di Bash

Mari kita faham dengan contoh. Buat skrip shell sampel, dan buat fungsi dengan sebarang nama. Kemudian tambah perangkap perintah dengan fungsi untuk Err isyarat. Seterusnya, tambahkan arahan mudah yang menghasilkan ralat.

#!/usr/bin/env bash on_error () echo "beberapa ralat berlaku" perangkap 'on_error' err ls ~/dir_not_exists
123456789#!/usr/bin/env bash on_error () echo "beberapa ralat berlaku" perangkap 'on_error' err ls ~/dir_not_exists

Jalankan skrip di atas dan anda harus melihat hasilnya di bawah:

Output: LS: Tidak dapat mengakses '/rumah/tecadmin/dir_not_exists': Tiada fail atau direktori sedemikian ralat berlaku 

Anda dapat melihat bahawa ralat terperangkap dan fungsi on_error () dilaksanakan oleh skrip bash.

Contoh: Jalankan arahan atas kesilapan di Bash

Mari lihat satu lagi contoh. Di sini kita akan melaksanakan arahan apabila sebarang ralat akan berlaku dalam 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 menentukan sebarang fungsi yang berasingan. Cukup jalankan perintah echo atas kesilapan. Laksanakan skrip di atas dan lihat hasilnya.

Output: LS: Tidak dapat mengakses '/rumah/tecadmin/dir_not_exists': Tiada fail atau direktori ohhh! 

Contoh: Dapatkan bilangan baris ralat berlaku

Anda juga boleh mengetahui nombor baris, di mana ralat berlaku dalam skrip bash bersama dengan nama skrip. Untuk melakukan ini menggunakan 'pemanggil' yang terbina dalam bash.

#!/usr/bin/env bash on_error () echo "ralat yang terdapat dalam: $ (pemanggil)"> & 2 perangkap 'on_error' err ls ~/dir_not_exists
123456789#!/usr/bin/env bash on_error () echo "ralat yang terdapat dalam: $ (pemanggil)"> & 2 perangkap 'on_error' err ls ~/dir_not_exists

Laksanakan skrip di atas dan lihat hasilnya. Anda akan melihat nama skrip dan nombor baris, di mana ralat berlaku.

Output: LS: Tidak dapat mengakses '/rumah/tecadmin/dir_not_exists': Tiada ralat fail atau direktori sedemikian yang terdapat di: 9 ./skrip.sh 

Kesimpulan

Terima kasih kerana membaca artikel ini. Mudah -mudahan, tutorial ini membantu anda dengan menulis skrip shell yang lebih baik dengan menangkap kesilapan dan mengambil tindakan.

Juga, ingat bahawa perangkap err menangkap ralat runtime sahaja. Suka jika arahan mengembalikan kod status bukan sifar. Ia tidak menimbulkan kesilapan sintaks, kerana dalam kes ralat sintaks, skrip gagal tanpa menjalankan arahan.