如何使用以下命名约定导入Bash函数:" [模块] :: [函数名称]"?

时间:2015-03-06 15:40:01

标签: linux bash shell


我正在一个名为library.sh的.sh文件中编写函数集合。

我希望在我的库中定义每个函数来创建一个伪名称空间,如下所示:

library::functionA () 
{
...
}

library::functionB() 
{
...
}

然后在主脚本中调用库函数如下:

. lib/library.sh
...
library::functionA

当我运行主脚本时,收到一条错误消息:

library::functionA command not found


重新运行项目中有一个示例: https://github.com/rerun/rerun/blob/master/etc/bash_completion.sh (参见list:member)但该方法在本地调用,只有一个冒号。

Google的shell样式链接中也提到了这个想法:https://google-styleguide.googlecode.com/svn/trunk/shell.xml

  

在函数名下。用::分隔库。括号是   在函数名称后面需要。

我想要[模块名称] :: [函数名称]。

我错过了什么?
谢谢你的帮助,

1 个答案:

答案 0 :(得分:0)

我刚刚意识到这一点。谢谢rici。我通过删除parantheses并将特定的指令typeset -fx library :: test添加到我想在library.sh中导出的方法来实现它。另外一个给你们两个。但是,是否有更好的方法从脚本中导出所有函数? fyi,排版似乎已经过时了。

我的问题的答案是:在library.sh之上排版-f。甜,这很酷!谢谢!导出所有功能。

如果我现在在我的库中调用本地方法,我需要添加" library ::"。是否有一个bash内置指令来说明函数是否在本地省略了标签" library ::" ?