我还没有找到解决方案。有人给点提示吗?
我有时会在 shell 脚本中编写 bash 函数,并且我喜欢让脚本变得冗长,而不仅仅是为了调试。所以有时我想在我的脚本中将被调用的 bash 函数的“名称”显示为“变量”。
我有时所做的只是设置一个包含函数名称的常规变量。像这样:
test ()
{
funcName=test
echo "function running..."
echo "\$0 is : $0"
echo "function name is : $funcName"
}
但这有点愚蠢。
还有更好的吗?
答案1
有时读一下就足够了man bash
:
函数名
一个数组变量,包含当前执行调用堆栈中的所有 shell 函数的名称。索引为 0 的元素是任何当前正在执行的 shell 函数的名称。最底部的元素(索引最高的元素)是“main”。该变量仅在 shell 函数执行时存在。对 FUNC-NAME 的赋值无效并返回错误状态。如果 FUNCNAME 未设置,它将失去其特殊属性,即使随后重置也是如此。
用法示例:
#!/usr/bin/env bash
func()
{
echo I am inside "$FUNCNAME"
}
foo()
{
echo I am inside "$FUNCNAME"
}
func
foo