在 Linux 中,Shell 脚本中调用其他文件中的函数,可以通过以下几种方式实现:
✅ 方法一:使用 source 或 . 命令
你可以在 Shell 脚本中使用 source 或 . 命令来加载另一个文件中的函数定义。
示例:
假设你有一个文件 myfunc.sh,内容如下:
# myfunc.sh
function hello() {
echo "Hello from function!"
}
然后在另一个 Shell 脚本中调用它:
#!/bin/bash
# 加载 myfunc.sh 中的函数
source myfunc.sh
# 调用函数
hello
注意:source 会将文件内容直接加载到当前 Shell 环境中,函数会立即生效。
✅ 方法二:使用 export 和 source(适用于脚本中定义函数)
如果你在脚本中定义函数,可以使用 source 来加载:
#!/bin/bash
# 定义函数
function greet() {
echo "Hello, $1!"
}
# 加载函数文件
source greet.sh
# 调用函数
greet "World"
注意:source 会将文件内容加载到当前 Shell 环境中。
✅ 方法三:使用 . 操作符(更推荐)
#!/bin/bash
# 加载函数文件
. greet.sh
# 调用函数
greet "World"
注意:. 操作符和 source 的效果是一样的,但 . 是更推荐的方式,尤其在脚本中定义函数时。
✅ 方法四:使用 function 声明(在脚本中定义函数)
如果你在脚本中定义函数,可以使用 function 声明:
#!/bin/bash
function greet() {
echo "Hello, $1!"
}
# 调用函数
greet "World"
✅ 方法五:使用 eval(不推荐)
eval "$(source myfunc.sh)"
这种方式虽然可以执行文件内容,但不推荐在脚本中使用,因为会执行所有内容,包括可能的命令和变量赋值,容易引发意外行为。
✅ 总结
| 方法 | 推荐使用场景 | 说明 |
|---|---|---|
source 或 . |
脚本中加载函数 | 直接加载函数定义,函数立即生效 |
eval |
需要执行文件内容 | 不推荐,易引发问题 |
function 声明 |
脚本中定义函数 | 更安全、推荐方式 |
✅ 示例:调用多个函数
假设 myfunc.sh 中有:
function greet() {
echo "Hello, $1!"
}
function bye() {
echo "Goodbye, $1!"
}
在另一个脚本中:
#!/bin/bash
source myfunc.sh
greet "Alice"
bye "Bob"
如需进一步帮助,欢迎继续提问!


