导入shell脚本功能

时间:2012-12-11 05:26:05

标签: bash shell

嗨,我是SHELL脚本的新手。实际上我在文件err()中有一个函数abc,这些文件不是.sh个扩展名,而是简单文件,但以#!/bin/bash开头

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

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

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

这是一种正确的导入方式吗?

3 个答案:

答案 0 :(得分:23)

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

该文件不必以.sh

结尾

答案 1 :(得分:4)

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

  1. 对函数使用命名约定,例如使用f_作为函数名称的前缀,例如f_err。函数调用与其他命令没有什么不同,这是读者的提示。它还减少了名称冲突的可能性。

  2. 您只需要阅读权限,而您不需要#!/bin/bash(只是评论)。

  3. 在Bash中,必须在函数解析之前设置一些选项。例如,如果函数使用扩展的globbing,则必须在函数之前和之外完成shopt -s extglob。把它放在函数内已经太晚了。

  4. Bash不支持FPATH环境变量或自动加载(如Korn shell所做的那样)。

答案 2 :(得分:2)

您需要导出新创建的功能

abc结束时加上:

export -f err