Bash

如何獲取或反映被呼叫的 bash 函式的名稱?

  • April 1, 2016

我還沒有找到解決方案。有人提示嗎?

我有時會在我的 shell 腳本中編寫 bash 函式,我喜歡讓我的腳本變得冗長,而不僅僅是為了調試。所以有時我想在我的腳本中將呼叫的 bash 函式的“名稱”顯示為“變數”。

我有時所做的只是設置一個包含函式名稱的正常變數。像這樣:

test ()
{
   funcName=test
   echo "function running..."
   echo "\$0 is : $0"
   echo "function name is : $funcName"
}

但這有點愚蠢。

有更好的嗎?

有時閱讀就足夠了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

引用自:https://unix.stackexchange.com/questions/273607