23

err()在文件中有一个函数abc。这些文件没有.sh扩展名,但它们以#!/bin/bash.

err () {
    echo "${1}" >&2 
}

现在我将它导入到另一个文件中xyz

source abc
someFunction(){ 
    err "Failed to back up"
}

这是正确的导入方式吗?

4

3 回答 3

25

是的,你可以像上面提到的那样做,或者像:. FILENAME

该文件不需要以.sh

于 2012-12-11T05:29:29.573 回答
4

没关系,这里还有一些提示:

  1. 对函数使用命名约定,例如在函数名称前加上f_,例如f_err. 函数调用与其他命令没有什么不同,这是给读者的一个提示。它还减少了名称冲突的机会。

  2. 您只需要读取权限,并且不需要#!/bin/bash(它只是一个评论)。

  3. 在 Bash 中,必须在函数解析之前设置一些选项。例如,shopt -s extglob如果它使用扩展通配符,则必须在函数之前和外部完成。把它放在函数中为时已晚。

  4. Bash 不支持 FPATH 环境变量或自动加载(就像 Korn shell 一样)。

于 2012-12-11T08:21:04.883 回答
3

您需要导出新创建的函数

在末尾abc添加:

export -f err
于 2012-12-11T10:38:04.627 回答