トラップ、ERR、エコーエラーライン

トラップ、ERR、エコーエラーライン

すべてのエラーの関数を呼び出すためにトラップを使用していくつかのエラーレポートを作成しようとしています。

Trap "_func" ERR

ERR信号が送信されるラインを取得できますか?シェルはbashです。

これにより、どのコマンドが使用されたかを読み、報告したり、一部の操作を記録/実行したりできます。

それとも私が間違っているのでしょうか?

私は以下をテストしました。

#!/bin/bash
trap "ECHO $LINENO" ERR

echo hello | grep "asdf"

2を返してい$LINENOます。動作しません。

ベストアンサー1

コメントで指摘したように、あなたの見積もりが間違っています。$LINENO初めて解析するときにトラップ行が拡大するのを防ぐには、単一引用符が必要です。

これは働きます:

#! /bin/bash

err_report() {
    echo "Error on line $1"
}

trap 'err_report $LINENO' ERR

echo hello | grep foo  # This is line number 9

実行してください:

 $ ./test.sh
 Error on line 9

おすすめ記事