回答
號的這些要求的POSIX標準SH向is quite small有特殊的行爲變量列表,並沒有等同於FUNCNAME
給出;最接近的是LINENO
。
(如果這樣的事情在POSIX SH已經存在,爲什麼會打壞添加自己的,而不是推行規範?)
這真的是個問題:它是一個特定的東西,還是我錯過了什麼?感謝您的回答 –
@AndrasP它是特定的bash。 Ksh93在'$ {。sh.fun}'中有相當的功能。試試'function a {echo「.sh.fun = $ {。sh.fun}」; }'。你可以用'typeset -n FUNCNAME = .sh.fun'來模擬bash。默認情況下,ksh嘗試不使用特殊行爲重載shell變量。 –
編輯 我如何測試,如果有一個變量只是一張紙條,告訴我目前的功能是什麼。什麼是最初混淆是FUNCNAME
是可用的Mac甚至在/bin/sh
所以我想知道爲什麼它在Linux上是空的 - 因此OP。 打開variables的規格可以瞭解一些情況(請參閱接受的答案),但我仍然好奇在函數中還有什麼可用的。
怎麼看相關功能
環境
shell變量:
組應在當前語言環境的整理順序寫的所有shell變量名稱和值
所以
$ set > a
$ function f() {
set > b
}
$ f
然後
diff a b
能不能給我的功能有關的變量在bash(並沒有在SH如預期)
> BASH_LINENO=([0]="5")
14a15
> FUNCNAME=([0]="f")
55c56
作爲POSIX規範。引用顯示,沒有參數的'set'應該列出_variables only_。 這是一個'bash'特定的_extension_也列出_functions_(如果你在POSIX模式下運行'bash'(例如,通過運行'shopt -so posix'),你將只能得到變量)。如果使用'bash'是一個選項,則可以簡單地使用'$ FUNCNAME'。 說實話,這個答案主要是分心 - 考慮接受@ CharlesDuffy的答案。另外:'變量'鏈接是關於_environment_變量,而不是_shell_變量。 – mklement0
這更多的是關於如何找到與**當前函數**相關的變量的附註。最初我正在尋找一個變量,所以顯然我正在使用'set'。 –
如果這是一個附註,請更新這個答案,以清楚地標記它,並_解釋它如何與你的問題相關。此外,「這也意味着,如果我做了以下事情,我應該得到我需要的信息」特別令人困惑,因爲上面直接引用的內容清楚地說明了shell _variables_。我所發現的有趣之處在於,你隱式地演示了POSIX類的shell在執行期間遇到定義的行之前不會創建函數和變量。 – mklement0
- 1. bash FUNCNAME值擴展
- 2. funcname();並返回funcname();在form的onsubmint屬性中?
- 3. Swift:NSTimer Alternative
- 4. Eval alternative
- 5. beginSheet:block alternative?
- 6. Phonegap Alternative
- 7. Xrefresh alternative
- 8. Alternative ContextMenuStrip
- 9. JConsole alternative
- 10. ContentEditable Alternative
- 11. setTimeout alternative
- 12. php:array_replace_recursive alternative
- 13. Socky Alternative
- 14. AVFoundation Alternative
- 15. Redux Alternative
- 16. 在記錄中覆蓋「funcName」
- 17. VAR的varName = funcname函數(){}
- 18. CSS - Calc alternative
- 19. JavaScript innerHTML.length alternative
- 20. Emacs ECB Alternative
- 21. Microsoft AntiXSS Alternative
- 22. Java getElementById()或Alternative
- 23. 開源Clearcase Alternative
- 24. MySQL Query - alternative
- 25. Javascript code alternative
- 26. Me.Handle in Module - Alternative?
- 27. http://www.winpcap.org/ alternative
- 28. http://modules.sourceforge.net/ alternative
- 29. Google Groups alternative
- 30. JIRA/confluence alternative
問這個,因爲我通常使用'do_something(){FUNC = $ {FUNCNAME: - 做一點事} .... ; }'在我的便攜式腳本,我想知道是否有一個更簡單的方式,也許... –
DUP http://stackoverflow.com/q/2630812 –
不是真的,問題是'_The問題:我怎麼得到一個腳本中所有函數名稱的列表?_'不''當前函數名稱是什麼'。我正在尋找一個解決方案,看起來像bash'回聲「用法$ FUNCNAME」.' –