繁体   English   中英

从带有空格的脚本中导出环境变量

[英]Exporting environment variables from script with whitespaces

问题的大图:我正在创建 Golang 脚本 ( http://github.com/Droplr/aws-env ),它将用于保护检索环境变量并将它们导出以用于另一个进程。

众所周知,这并不容易,因为脚本无法将变量导出到 [1]、[2]之外

所以我们尝试这样做的方式基本上是输出导出语句,然后使用 bash 反引号来运行该命令。

最终用法如下:

`aws-env` && printenv

其中 printenv 应显示由评估的 aws-env 输出(包含“export”语句)导出的变量。

包含空格/换行符等的变量会出现问题。

简化下划线代码,这个工作:

$ export A=b\ b
$ printenv | grep A=
A=b b

而这 - 不是:

$ `echo export A=b\ b`
$ printenv | grep A=
A=b

我已经查看了其他 Stackoverflow 讨论([3]),但找不到该问题的明确答案(大多数答案是不使用反引号,但对于我们的整体问题,我们试图解决它不会那么容易...... )

eval "$(aws-env)"

它适用于使用转义空格和引号。

如果我正确地遵循这一点,aws-env 将输出如下内容:

export A=b\ b
export B=test
export C=this\ is\ a\ test

你想在你当前的 shell 中执行这些命令吗? 如果是这样,这应该工作:

. <(aws-env)
printenv | egrep "^[ABC]="

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM