Java-like 跟踪时跳出 bash 函数
Java-like stepping out of a bash function when tracing it
在 bash
中跟踪函数时,我可以 return non-zero 值(比如,1
)来自 DEBUG
trap
处理程序跳过下一行的执行。
此外,我可以 return 值 2
在函数外执行 return
语句 return 而无需执行函数的其余部分 body
但是,我希望能够跳出当前函数,不是通过`return',而是通过执行函数的其余部分body 只需一次(而不是执行它 line-by-line 直到它的 body 结束)。
这可能吗?
确实很乏味,但似乎可以使用 Bash.
提供的现有调用堆栈信息来完成此操作
方法如下。
继续执行您的 DEBUG
陷阱处理程序,直到您到达下一个调用堆栈帧 F2,它位于当前调用堆栈帧 F1 的正下方,并在大于或等于 BASH_LINENO
保存在F2中。 '... or equal to' 检查是解决递归调用所必需的。
在 bash
中跟踪函数时,我可以 return non-zero 值(比如,1
)来自 DEBUG
trap
处理程序跳过下一行的执行。
此外,我可以 return 值 2
在函数外执行 return
语句 return 而无需执行函数的其余部分 body
但是,我希望能够跳出当前函数,不是通过`return',而是通过执行函数的其余部分body 只需一次(而不是执行它 line-by-line 直到它的 body 结束)。
这可能吗?
确实很乏味,但似乎可以使用 Bash.
提供的现有调用堆栈信息来完成此操作方法如下。
继续执行您的 DEBUG
陷阱处理程序,直到您到达下一个调用堆栈帧 F2,它位于当前调用堆栈帧 F1 的正下方,并在大于或等于 BASH_LINENO
保存在F2中。 '... or equal to' 检查是解决递归调用所必需的。