代码之家  ›  专栏  ›  技术社区  ›  Branson Smith

如何在ECS FARGATE容器上运行的shell脚本中获取环境变量?

  •  -1
  • Branson Smith  · 技术社区  · 2 年前

    我有一个ECS Fargate实例(node alpine base),上面运行着一些环境变量(该实例特有)。

    Environment Variables on container

    我可以在这里运行的python脚本中访问它们:

     // python_script.py
        name1 = os.environ['REACT_APP_TEAM_ONE_NAME']
        name2 = os.environ['REACT_APP_TEAM_TWO_NAME']
    
    

    但是这个shell脚本在同一个目录中找不到它们:

    #!/bin/sh
    
    TEAM_ONE_NAME=printenv REACT_APP_TEAM_ONE_NAME
    TEAM_TWO_NAME=printenv REACT_APP_TEAM_TWO_NAME
    

    shell脚本的输出:REACT_APP_TEAM_ONE_NAME:未找到

    我不确定这是ECS问题、shell脚本问题还是其他问题,因为我没有太多使用这些技术。谢谢你的帮助。

    1 回复  |  直到 2 年前
        1
  •  1
  •   David Maze    2 年前

    要访问shell脚本中的环境变量,请输入美元符号 $ 在其名称之前,通常确保它位于双引号字符串中:

    TEAM_ONE_NAME="$REACT_APP_TEAM_ONE_NAME"
    

    Shell变量和环境变量密切相关,您可能会发现直接在脚本中使用环境变量更容易。

    尝试运行的语法 REACT_APP_TEAM_ONE_NAME 作为命令(该字符串,而不是相应环境变量的值),设置环境变量 TEAM_ONE_NAME 不折不扣 printenv (同样,一个文本字符串,而不是命令的结果)仅适用于该命令执行的范围。