1

是否可以像我在标题中所说的那样使以下 bash 脚本工作?

#!/bin/bash

echo_report() {
    echo "echo on line $1"
}

trap 'echo_report $LINENO' [sigspec]

#same code here

echo "hi"

#more code here

我不知道我应该用什么[sigspec]...

如果trap无法使用,我还有哪些其他选择?

4

1 回答 1

5

包装echo在一个函数中,然后用于caller显示行号:

#!/bin/bash

echo() {
    caller
    command echo "$@"
}

echo "hi"

结果:

$ bash foo.bash
8 foo.bash
hi
于 2013-11-07T15:21:17.893 回答