'caller'を使用して、bashで関数呼び出しのバックトレースを取得できることを知っています。
#! /bin/bash
Backtrace () {
echo "Backtrace is:"
i=0
while caller $i
do
i=$((i+1))
done
}
myFunc () {
Backtrace
}
myFunc
プリント:
Backtrace is:
11 myFunc ./test.sh
13 main ./test.sh
私の質問は、チェックされていない失敗で終了するために「set-e」を使用するスクリプトがあるとしましょう。スクリプトが失敗した場所(およびその呼び出し元)の行番号を取得することは可能ですか?
私は素朴にやってみました:trap'Backtrace' EXIT、しかしそれは私に失敗したコマンドの行番号ではなく'1main./test.sh'を与えます