打印 bash 函数体并在函数体中包含注释

问题描述 投票:0回答:1

我正在使用 shdoc 为我的 bash 函数生成 markdown 文件;但是,我还想将相关的 bash 函数体 以及该函数体中的注释 附加到由

shdoc
生成的 markdown 文件中。如何打印 bash 函数体同时包括函数体中的注释?

作为一个简单的示例,请考虑名为

foo.sh

的文件中的以下函数
# @description A function that does something
foo() {
  # oh wow, a comment
  echo "something cool"
}

现在,如果我想获得函数体而不需要注释,我可以使用

declare -f
轻松完成此操作,如下所示,在名为
doc.sh
的文件中:

# assuming flat directory structure, load the function into this scope
. foo.sh
foo_doc=$(declare -f foo)
echo "$foo_doc"

但问题是

foo_doc
只有函数体,因为
echo "$foo_doc"

foo () 
{ 
    echo "something cool"
}

根本没有评论。因此,如果我将此信息附加到由

shdoc
生成的 markdown 中,它就不是理想的源代码文档。

我认为一种方法是使用

awk
sed
来确定与感兴趣的函数对应的行(当然,bash 函数由
{
}
分隔),然后我可以使用
 sed
仅获取此处完成的那些行。我计划尝试这种方法,但也许有一个更优雅的解决方案,这就是我问的原因。

bash awk sed
1个回答
0
投票

这有点麻烦,但你可以使用冒号注释:

foo() {
    : This is a comment
    echo foo this bar
}

说明:bash 中的

:
是一个无操作命令。你可以向它传递任何你想要的参数,它会忽略它们。因此,从技术上讲,这个“注释”实际上是一个命令,它是函数体的一部分,不执行任何操作。不过,您必须小心,如果您的评论包含特殊字符,则必须引用它们。

© www.soinside.com 2019 - 2024. All rights reserved.