【问题标题】:Importing shell script function导入shell脚本函数
【发布时间】:2012-11-28 15:30:09
【问题描述】:

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

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

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

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

这是正确的导入方式吗?

【问题讨论】:

    标签: bash shell


    【解决方案1】:

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

    文件不必以.sh结尾

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

        【解决方案3】:

        您需要导出新创建的函数

        abc 末尾添加:

        export -f err
        

        【讨论】:

        • 您只需要导出函数以使其在子shell 中可用(通过运行另一个bash 实例开始)。获取文件后,其中定义的任何函数都将在当前 shell 中可用。
        猜你喜欢
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        • 2012-01-23
        • 2010-10-09
        相关资源
        最近更新 更多