我有一个函数err()
,在文件abc
中。这些文件没有.sh
扩展名,但它们以#!/bin/bash
开头。
err () {
echo "${1}" >&2
}
现在我正在另一个文件xyz
中导入它:
source abc
someFunction(){
err "Failed to back up"
}
这样导入的方式正确吗?
是的,您可以按照上面提到的方法或者使用如下方式:. 文件名
文件名不需要以 .sh
结尾。
没问题,这里还有一些提示:
为函数使用命名约定,例如在函数名前加上前缀f_
,例如f_err
。函数调用与其他命令没有区别,这是对读者的提示。它也减少了名称冲突的可能性。
您只需要读取访问权限,不需要#!/bin/bash
(它只是一个注释)。
在Bash中,某些选项必须在函数解析之前设置。例如,如果要使用扩展的globbing,则必须在函数外部执行shopt -s extglob
。把它放在函数内部太晚了。
Bash不支持FPATH环境变量或autoload(像Korn shell那样)。
abc
的末尾添加以下内容:export -f err