0
问题的大图:我正在创建Golang脚本(http://github.com/Droplr/aws-env),该脚本将用于保护检索环境变量并导出它们以用于其他进程。使用空格从脚本导出环境变量
正如我们所知,这是不容易做到的,因为脚本不能输出 [1],[2]之外的变量。
所以我们试图这样做的方式,基本上是outputing export statements,然后使用bash反引号来运行该命令。
最终用途是这样的:
`aws-env` && printenv
其中printenv应该显示由评估AWS-ENV输出(其中包含 “出口” 报表)输出变量。与包含空格的/新线等
简化下划线代码变量
问题就出现了,这一个工程:
$ export A=b\ b
$ printenv | grep A=
A=b b
这 - 不是:
$ `echo export A=b\ b`
$ printenv | grep A=
A=b
我已经超过了其他Stackoverflow的讨论([3]),但找不到明确的答案(主要是答案是不使用反引号,但与我们的整体问题,我们试图解决它不会是那么容易......)
- [1] Can a shell script set environment variables of the calling shell?
- [2] https://unix.stackexchange.com/questions/79064/how-to-export-variables-from-a-file
- [3] Bash: escape characters in backticks
在同一个shell。脚本的用法如下:\'aws-env \'&& printenv(printenv应显示由aws-env导出的env变量)。 aws-env只是输出“export ...”,然后应该通过反引号进行评估。 –
只是为了再次确认您的要求? 'aws-env'有望做什么?它不清楚 – Inian
不应该这样:https://github.com/Droplr/aws-env/blob/master/aws-env.go#L60是'fmt.Printf(“export%s ='%s' \ n“,env,value)'?请注意,在这种情况下,如果您的导出语句包含其他shell变量,则不会外推它们。 – favoretti