caller
命令是bash特有的内置命令
, 其他Shell都没有包含此命令。
caller
命令用于输出当前函数
被调用的所在行和当前脚本名称。
caller [frame_index]
假设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
命令执行成功,打印出当前行。
假设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
假设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