Bash 我可以在全球范围内使用源文件吗?

Bash 我可以在全球范围内使用源文件吗?,bash,shell,Bash,Shell,考虑以下脚本摘录: 第三方物流文件内容: FULL_ACCESS_USER_TPL="id=FA_SEND action = OK sender == $EMAIL" 脚本内容 source tpl EMAILS="foo@domain.tld bar@domain.tld" for EMAIL in $EMAILS do echo $FULL_ACCESS_USER_TPL done 期望输出: id=FA_SEND action = OK sender == foo@doma

考虑以下脚本摘录:

第三方物流文件内容:

FULL_ACCESS_USER_TPL="id=FA_SEND action = OK sender == $EMAIL"
脚本内容

source tpl

EMAILS="foo@domain.tld bar@domain.tld"

for EMAIL in $EMAILS
do
    echo $FULL_ACCESS_USER_TPL
done
期望输出:

id=FA_SEND action = OK sender == foo@domain.tld
id=FA_SEND action = OK sender == bar@domain.tld

当我运行脚本时,我什么也得不到,但是如果我将
源tpl
放入循环中,我就会得到我想要的


我是否可以使用源文件,比如“全局”,以便在整个脚本中使用它们?

在tpl中创建一个函数,然后调用该函数:

$ cat tpl
function FULL_ACCESS_USER_TPL() {

    echo "id=FA_SEND action = OK sender == $EMAIL"
}

$ cat script.sh
source tpl

EMAILS="foo@domain.tld bar@domain.tld"

for EMAIL in $EMAILS
do
    FULL_ACCESS_USER_TPL
done

问题是,当您获取tpl时,
EMAIL
没有设置。

tpl中有什么?脚本似乎不完整,因为如果
tpl
是源代码,输出不能为空,而我不理解这个问题,脚本tpl的路径应该是绝对的,否则取决于当前的工作目录“当我运行脚本时,我什么也得不到”-与您发布的脚本不一样。我很抱歉弄乱了。tpl文件的内容是
FULL\u ACCESS\u USER\u tpl=“id=FA\u SEND action=OK sender=$EMAIL”