GNU/Linux >> Belajar Linux >  >> Linux

Perangkap, Err, Dan Menggaungkan Garis Kesalahan?

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

Linux
  1. Perbedaan Antara [[ $a ==Z* ]] Dan [ $a ==Z* ]?

  2. Hapus Baris Yang Mengandung String Tertentu Dan Baris Berikut?

  3. Konsep 'Hold space' dan 'Pattern space' di sed

  1. Hasil Ls * , Ls ** Dan Ls ***?

  2. Memanipulasi X Key Dan Pointer Grabs Di Command Line?

  3. Bagaimana cara menemukan nomor baris di Bash ketika terjadi kesalahan?

  1. Cetak Garis Pencocokan Dan Garis Ke-N Dari Garis Yang Cocok?

  2. Bagaimana Cara Mengubah Panjang Baris Default Untuk Od Dan Hexdump?

  3. Tambahkan Teks yang Cocok Ke Baris?