Shell:通过它的名字获取函数的主体

the*_*den 2 bash shell zsh

我用zsh(有时bash).问题是我有多个shell脚本,我不知道如何编写一个小函数来打印功能代码的名称(突出显示;我使用pygmentize -g).这是我想要得到的一个小例子:


$ getfunc "somefunc"

# from    my_little_hacks.sh
somefunc () {
    # function code
}
Run Code Online (Sandbox Code Playgroud)

它是一种干净而有效的方式,shell无论awk是否使用,nl并且cat在shell解释器的最佳时间内完成它?

函数不可能function在它的主体中有一个单词,除非那里有嵌套的单词.它几乎不可能在引号内部{}法律上不成对.

Cha*_*ffy 5

declare -f funcname
Run Code Online (Sandbox Code Playgroud)

...将funcname在bash和zsh中检索函数的代码.从而:

getfunc() {
  declare -f "$@" | pygmentize -l bash
}
Run Code Online (Sandbox Code Playgroud)

  • 该死的,这是你意识到所有你需要的东西已经写完的时刻之一,你只需要搜索.. (2认同)