arrays - bash $FUNCNAME 数组没有被清除

标签 arrays linux bash function debugging

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

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

输出如下所示:

test4 test3 test2 test1

这非常清楚地显示了嵌套,但是如果您使用 ctr+c 终止该函数,然后再次运行它,FUNCNAME 不会刷新,因此输出可能看起来像像这样(取决于您何时终止它):

test4 test3 test2 test1 test3 test2 test1

我尝试手动清除或取消设置 FUNCNAME,但随后得到空输出。关于如何解决这个问题有什么想法吗?

最佳答案

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

关于arrays - bash $FUNCNAME 数组没有被清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32732344/

相关文章:

linux - linux服务器上保存命令历史记录的所有位置在哪里

linux - 我的所有 inode 都在哪里使用?

bash - xrandr 大小 1920x1080 在可用模式 ubuntu 中找不到

java - 使用带有数组的compareTo方法按姓名和考试成绩对学生进行排序

php - 正确格式化 php 输出

php - 引用 - 这个错误在 PHP 中意味着什么?

linux - 使用 unix 脚本向逗号分隔文件添加空/零值会出现问题

Bash 选择没有标签的菜单格式

bash - 如果满足条件,AWK 从特定行打印列

PHP 从获取数组创建一个数组