【发布时间】:2012-11-28 15:30:09
【问题描述】:
我在文件abc 中有一个函数err()。这些文件没有.sh 扩展名,但它们以#!/bin/bash 开头。
err () {
echo "${1}" >&2
}
现在我将它导入到另一个文件xyz:
source abc
someFunction(){
err "Failed to back up"
}
这是正确的导入方式吗?
【问题讨论】:
我在文件abc 中有一个函数err()。这些文件没有.sh 扩展名,但它们以#!/bin/bash 开头。
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
【讨论】: