嗨,我是SHELL脚本中的新成员。其实我在文件中有一个功能err()
abc
文件不与.sh
扩展他们是简单的文件,但与#!/bin/bash
导入shell脚本函数
err() {
echo "${1}" >&2
}
现在我将其导入不同的文件xyz
source abc
someFunction(){
err "Failed to back up"
}
是否开始一个正确的导入方式?
嗨,我是SHELL脚本中的新成员。其实我在文件中有一个功能err()
abc
文件不与.sh
扩展他们是简单的文件,但与#!/bin/bash
导入shell脚本函数
err() {
echo "${1}" >&2
}
现在我将其导入不同的文件xyz
source abc
someFunction(){
err "Failed to back up"
}
是否开始一个正确的导入方式?
是的,你可以像你所提到的上述或类似:. FILENAME
文件不必与.sh
这很好,这里有一些更多的提示来结束:
使用函数的命名约定,例如在函数名称前加上f_
,例如f_err
。函数调用与其他命令没有区别,这是给读者的一个提示。它也减少了名称冲突的可能性。
您只需要阅读权限,并且您不需要#!/bin/bash
(它只是一条评论)。
在Bash中,一些选项必须在函数解析之前设置。例如,shopt -s extglob
必须在函数之前和之外完成,如果它使用扩展通配符。把它放在功能里面已经太晚了。
Bash不支持FPATH环境变量或自动加载(如Korn shell所做的那样)。
您需要出口新创建的功能
在abc
末补充一点:
export -f err
你只需要导出功能,使其在一个子shell可用的(一个启动通过运行另一个bash实例)。源文件后,其中定义的任何功能将在当前shell中可用。 – chepner