Bash
如何獲取或反映被呼叫的 bash 函式的名稱?
我還沒有找到解決方案。有人提示嗎?
我有時會在我的 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