caller命令
1.0、参考
1.1、caller命令的类型

caller命令是bash特有的内置命令, 其他Shell都没有包含此命令。

1.2、caller命令的作用

caller命令用于输出当前函数被调用的所在行和当前脚本名称。

1.3、caller命令的使用格式
caller [frame_index]
1.3.1、示例1

假设test.sh的内容如下:

function xx() {
    caller && echo "current line number is $LINENO";
}
xx

运行该脚本:

bash test.sh

结果如下:

4 test.sh
xx called, current line number is 2

说明:

4 test.sh表明在test.sh的第4行调用了一个函数。

xx called, current line number is 2表明caller命令执行成功,打印出当前行。

1.3.2、示例2

假设test.sh的内容如下:

function xx() {
    caller   && echo "current line number is $LINENO";
    caller 1 && echo "current line number is $LINENO";
}
function yy() {
    xx
}
yy

运行该脚本:

bash test.sh

结果如下:

6 test.sh
xx called, current line number is 2
8 main test.sh
xx called, current line number is 3
1.3.3、示例3

假设a.sh的内容如下:

caller && echo "a.sh called, current line number is $LINENO"

假设b.sh的内容如下:

echo "b.sh, current line number is $LINENO"
source a.sh

运行b.sh

bash b.sh

结果如下:

b.sh, current line number is 1
2 b.sh
a.sh called, current line number is 1