bash $ FUNCNAME数组未被清除

时间:2015-09-23 06:19:57

标签: arrays linux bash function debugging

我有很多通常互相嵌套的函数。出于简单的调试目的,我决定使用FUNCNAME提供的bash环境变量数组来跟踪代码流。以下是示例代码:

test1(){ test2;}
test2(){ test3;}
test3(){ test4;}
test4(){ echo ${FUNCNAME[@]};}

输出如下:

test4 test3 test2 test1

其中非常清楚地显示了嵌套,但是如果使用ctr+c终止该函数并再次运行它,则不会刷新FUNCNAME,因此输出可能如下所示(取决于您何时开始)终止它):

test4 test3 test2 test1 test3 test2 test1

我尝试手动清除或unset FUNCNAME,但后来我得到空输出。关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:2)

有些人可能会说这个问题是一个功能,而不是一个错误。如果堆栈中的任何函数崩溃,您可以echo ${funcname[@]}查看崩溃发生的位置。最终结论是:该问题被报告为错误,并在bash v4.4.0中得到修复。

相关问题