调用其他脚本中的函数时, 若函数中使用了函数所在文件的变量但是当前sheell脚本并没有导入函数所在脚本, 变会出现可以访问函数但是函数无法访问变量的问题
代码示例
a.sh
#!/bin/bash
str="sss"
function getStr()
{
echo "str=${str}"
}
b.sh
#!/bin/bash
# 导入
. ./a.sh
echo "run getStr in b.sh"
getStr
echo "run getStr in c.sh"
./c.sh
c.sh
#!/bin/bash
getStr
运行
执行b.sh 输出如下
run getStr in b.sh
str=sss
run getStr in c.sh
str=
从结果中可以看出, b.sh调用了a.sh, 由于a.sh使用export -f getStr, 所以在c.sh中也可以方位getStr, 但是由于str的作用域仅为b.sh, 所以c.sh中无法访问到str