Saya mencoba membuat beberapa pelaporan kesalahan menggunakan Perangkap untuk memanggil fungsi pada semua kesalahan:
Trap "_func" ERR
Apakah mungkin untuk mendapatkan dari jalur mana sinyal ERR dikirim? Cangkangnya adalah bash.
Jika saya melakukannya, saya dapat membaca dan melaporkan perintah apa yang digunakan dan mencatat/melakukan beberapa tindakan.
Atau mungkin saya melakukan ini semua salah?
Saya menguji dengan yang berikut:
#!/bin/bash
trap "ECHO $LINENO" ERR
echo hello | grep "asdf"
Dan $LINENO
kembali 2. Tidak berfungsi.
Jawaban yang Diterima:
Seperti yang ditunjukkan dalam komentar, kutipan Anda salah. Anda memerlukan tanda kutip tunggal untuk mencegah $LINENO
dari diperluas saat garis jebakan pertama kali diuraikan.
Ini berfungsi:
#! /bin/bash
err_report() {
echo "Error on line $1"
}
trap 'err_report $LINENO' ERR
echo hello | grep foo # This is line number 9
Menjalankannya:
$ ./test.sh
Error on line 9
Bagaimana Cara Memeriksa Sinyal Apa yang Didengarkan oleh Proses?
Linux – Apa Perbedaan Utama Antara Sistem Operasi Berbasis Bsd dan Linux?