嗨,我是SHELL脚本的新手。实际上我在文件err()
中有一个函数abc
,这些文件不是.sh
个扩展名,而是简单文件,但以#!/bin/bash
开头
err () {
echo "${1}" >&2
}
现在我将其导入另一个文件xyz
source abc
someFunction(){
err "Failed to back up"
}
这是一种正确的导入方式吗?
答案 0 :(得分:23)
是的,你可以像上面提到的那样做:. FILENAME
该文件不必以.sh
答案 1 :(得分:4)
没关系,这里有一些提示:
对函数使用命名约定,例如使用f_
作为函数名称的前缀,例如f_err
。函数调用与其他命令没有什么不同,这是读者的提示。它还减少了名称冲突的可能性。
您只需要阅读权限,而您不需要#!/bin/bash
(只是评论)。
在Bash中,必须在函数解析之前设置一些选项。例如,如果函数使用扩展的globbing,则必须在函数之前和之外完成shopt -s extglob
。把它放在函数内已经太晚了。
Bash不支持FPATH环境变量或自动加载(如Korn shell所做的那样)。
答案 2 :(得分:2)
您需要导出新创建的功能
在abc
结束时加上:
export -f err