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' 检查是解决递归调用所必需的。