在没有调试器/stacktrace的情况下,要在bash脚本中找到调用函数的行,可以通过以下方法实现:
$LINENO
内置变量:在bash脚本中,$LINENO
表示当前行号。可以在函数中使用$LINENO
来获取函数调用的行号。例如:#!/bin/bash
function my_function() {
echo "Function called at line: $1"
}
my_function $LINENO
在上述示例中,my_function
函数接受一个参数,即调用函数的行号。通过传递$LINENO
作为参数,可以获取调用函数的行号。
caller
命令:caller
命令可以显示调用堆栈的信息,包括函数名和行号。可以在函数中使用caller
命令来获取调用函数的行号。例如:#!/bin/bash
function my_function() {
local caller_info=$(caller 0)
echo "Function called at line: $caller_info"
}
my_function
在上述示例中,my_function
函数使用caller
命令获取调用函数的信息,并将其打印出来。
需要注意的是,以上方法都是在bash脚本中模拟调试器的功能,通过获取行号或调用堆栈信息来定位函数调用的行。然而,这些方法并不如调试器或stacktrace提供的信息详尽和准确。
领取专属 10元无门槛券
手把手带您无忧上云