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