如何通过shell脚本导出变量而不使用源命令?



我想根据以下条件导出变量:

if [[ "$1" == *"eu"* ]]; then
export API_URL=https://xx-gateway-eu.xx.com/cccccccc
elif [[ "$1" == *"as"* ]]; then
export API_URL=https://xx-gateway-as.xx.com/cccccccc
else
export API_URL=https://xx-gateway-na.xx.com/cccccccc
fi

当我使用"/script.sh yyy.ee.kkk.eu.dd.com"执行脚本时,执行成功,但我没有看到导出的变量,echo $API_URL为空。如果我使用'source ./script.sh',我可以看到变量被设置,并且我理解它的行为像这样的原因。但是,有没有一种方法来实现它作为shell脚本执行本身的一部分,而不使用源代码?

据我所知没有,因为该执行发生在进程中。这就是脚本中的shebang行。

source(或.,如果你喜欢)是你真正想要的。

编辑:或者使用eval如果你真的需要

…如果您真的想避免source,您可以使用eval来确保您留在进程中:

$ 1=foo-eu- eval "$(cat script.sh)"
$ echo $API_URL
https://xx-gateway-as.xx.com/cccccccc

eval的正常警告。

相关内容

  • 没有找到相关文章

最新更新