无法映射JQ for JSON中的变量值引用

时间:2018-07-17 19:26:52

标签: json jq

我正在尝试更新json中的环境变量值。我可以通过使用变量作为参考来做到这一点吗?

这有效:

cat taskdef.json | jq '
  .taskDefinition.containerDefinitions[].environment
  | map(if .name == "ARTIFACT_LOCATION" 
        then . + {"value" : "2"} 
        else . end)'

这不是:

 cat taskdef.json | jq '
   .taskDefinition.containerDefinitions[].environment
   | map(if .name == "ARTIFACT_LOCATION" 
         then . + {"value" : "**$NEW_ARTIFACTORY_LOCATION**"} 
         else . end)'

1 个答案:

答案 0 :(得分:0)

如果到$**$NEW_ARTIFACTORY_LOCATION**您打算表示环境变量$ NEW_ARTIFACTORY_LOCATION的值,则可以使用env.NEW_ARTIFACTORY_LOCATION,例如

.taskDefinition.containerDefinitions[].environment
| map(if .name == "ARTIFACT_LOCATION" 
     then . + {"value" : env.NEW_ARTIFACTORY_LOCATION} 
     else . end)'

或者,您可以使用--arg NAME VALUE命令行选项。