[英]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.