【问题标题】:How to set an environment variable with a '$' in the value in Elastic Beanstalk?如何在 Elastic Beanstalk 的值中设置带有“$”的环境变量?
【发布时间】:2016-10-03 19:15:44
【问题描述】:

当我输入一个带有美元符号$ 的值时,环境只读取它的第一部分,这是因为生成的 env 文件在值中放置了双引号而不是单引号。有什么办法吗?该值无法更改,因为它是来自我无法控制的服务的访问令牌。

例子:

生成的 env 文件如下: export MY_VAR="my$value"

运行结果: MY_VAR=my

【问题讨论】:

标签: amazon-web-services environment-variables amazon-elastic-beanstalk


【解决方案1】:

用三个反斜杠转义美元符号(使用 Web 控制台或命令行):

eb setenv -e my-environment MY_VARIABLE=\\\$foobar

或者使用强引号 (''),您只需使用一个反斜杠即可转义:

eb setenv -e my-environment MY_VARIABLE='\$foobar'

【讨论】:

    【解决方案2】:

    它正在评估 $value 作为变量并将其转换为空字符串,因为该变量在环境中不存在。尝试像这样转义 $ 字符:

    export MY_VAR="my\$value"

    或者,使用单引号来防止变量扩展:

    export MY_VAR='my$value'

    【讨论】:

    • 我尝试转义,但在环境中以my\\ 结尾,我无法控制值的引号,这是由 Beanstalk 处理的。我最终使用了不同的字符并在代码中替换了它。弱解决方案但有效。
    【解决方案3】:

    似乎美元符号及其后续字符被解释(例如通过 bash)作为环境变量并被其值替换。虽然环境变量 $value (显然)为空,但它只是被评估为“我的”和(空字符串)。

    我花了很长时间才找到解决方法,但这个(虽然很丑)对我有用:只需用

    包围你的字符串
    $(echo '<your string here>')
    

    并确保所有美元符号都使用“\”符号进行转义,例如使用以下字符串作为 ElasticBeanStalk 的环境属性值

    MY_VAR=$(echo 'my\$value')
    

    因此,值“my$value”将作为 MY_VAR 传递给您的应用程序。

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2019-07-06
      • 2021-04-08
      • 2020-11-09
      • 2017-07-24
      • 2020-02-05
      • 2016-12-10
      • 2015-06-08
      • 2015-08-05
      相关资源
      最近更新 更多