2012-12-11 89 views
21

嗨,我是SHELL脚本中的新成员。其实我在文件中有一个功能err()abc文件不与.sh扩展他们是简单的文件,但与#!/bin/bash导入shell脚本函数

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

现在我将其导入不同的文件xyz

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

是否开始一个正确的导入方式?

回答

22

是的,你可以像你所提到的上述或类似:. FILENAME

文件不必与.sh

4

这很好,这里有一些更多的提示来结束:

  1. 使用函数的命名约定,例如在函数名称前加上f_,例如f_err。函数调用与其他命令没有区别,这是给读者的一个提示。它也减少了名称冲突的可能性。

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

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

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

2

您需要出口新创建的功能

abc末补充一点:

export -f err 
+0

你只需要导出功能,使其在一个子shell可用的(一个启动通过运行另一个bash实例)。源文件后,其中定义的任何功能将在当前shell中可用。 – chepner