如何使用 JQ 设置 Json 值作为通过管道传输到 JQ 的命令的结果

如何使用 JQ 设置 Json 值作为通过管道传输到 JQ 的命令的结果

我在 bash 脚本中有一个函数,它从命令的 JSON 输出中获取 ID 号。我想在另一个 JSON 文件中设置这个值。我怎样才能做到这一点?

build_vpc(){

      aws ec2 create vpc --Foo "ipaddress" | jq .Vpc.VpcID
}
Output : "vpc-0f482198efba76163"

我想获取这个值并将其设置在另一个 JSON 文件中。

杰森文件:

{
  "VPC":{
         "VPC_ID" : ""
}
}

答案1

那会是这样的:

jq --argjson vpcid "$(
    aws ec2 create vpc --Foo "ipaddress" | jq .Vpc.VpcID
  )" 'setpath(["VPC","VPC_ID"]; $vpcid)' file.json > newfile.json

的输出jq .Vpc.VpcID被解释为 json 并存储在$vpcidother 的变量中,该变量将( path 处的对象)jq设置为它。.VPC.VPC_ID["VPC","VPC_ID"]file.json

我假设上面您file.json最初会有其他应该保留的信息,并且您只想更新它与新信息。

如果重点是创建一个file.json仅包含以下内容的新内容:

{
  "VPC":{
         "VPC_ID" : "that-value"
  }
}

你只需要这样做:

aws ec2 create vpc --Foo "ipaddress" |
  jq '{"VPC":{"VPC_ID":.Vpc.VpcID}}' > newfile.json

相关内容