编辑:或者使用
我想根据以下条件导出变量:
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
的正常警告。