Tim*_*Tim 6 scripting bash function
在 bash 中,有时我想在多个脚本中重用一个函数。在所有脚本中重复函数的定义是不是很糟糕?如果是这样,有什么好的做法?
以下方式是个好主意吗?
myfunction
在它自己的脚本中define_myfunction.sh
,source define_myfunction.sh
,然后调用函数myfunction arg1 arg2 ...
。谢谢。
在 中bash
,这是一个很好的方法,是的。
source
使用or获取“库”脚本.
可以充分解决您想要在两个或多个脚本之间共享函数定义的问题。每个需要访问“库”脚本中定义的函数的脚本都会获取所需的文件,可能位于脚本的顶部。
这将允许您在单个“库”脚本中收集相关函数并获取它以访问它们。
并非完全无关,但bash
shell 还能够在执行非交互式 shell(即脚本)时自动获取文件。这可用于为脚本设置特定环境:
BASH_ENV="$HOME/stuff/script.env" ./myscript
Run Code Online (Sandbox Code Playgroud)
... wherescript.env
可以做任何事情,从定义函数和设置 shell 或环境变量,到获取其他文件等。
某些 shell(例如ksh93
)具有指向可能包含此类函数定义脚本的目录的环境变量。在 中ksh93
,该变量称为FPATH
。脚本$FPATH/foo
会包含一个名为 的函数foo
,当用户foo
在命令行(或脚本中)键入时会自动找到该函数。据我所知, shellbash
不具有此特定功能。
其他 shell 具有其他形式的“自动加载”功能。