将 json 输出导出到环境变量,Bash 中缺少逗号

问题描述 投票:0回答:1
[{
"Availab]ilityZone": "ap-east-1a" 
  "Description": "AWS_FOO" 
  "Groups": [
    {
      "GroupName": "AWS_FOO" 
      "GroupId": "sg-AWS_FOO"
    } 
    {
      "GroupName": "AWS_FOO" 
      "GroupId": "sg-AWS_FOO"
    }
  ] 
 }
 {
"Availab]ilityZone": "ap-east-1a" 
  "Description": "AWAWS_FOOAWS_FOO" 
  "Groups": [
    {
      "GroupName": "AWS_FOO-eAWS_FOOAWS_FOO" 
      "GroupId": "sAWS_FOO"
    } 
    {
      "GroupName": "AWS_FOO" 
      "GroupId": "AWS_FOO"
    }
  ] 
}]

我正在尝试编写一个需要使用 aws cli 来查找值的自动化脚本,

NETWORK_INTERFACE=$(aws ec2 描述网络接口 --filters Name=vpc-id,Values="${VPC_ID}" --output json | jq -r '.NetworkInterfaces[]')

但是,当我 echo $NETWORK_INTERFACEthe 时,输出将缺少所有逗号“,”,使其不是有效的 json 格式,并且无法使用 jq 进行进一步操作

我尝试使用 IFS、sed 但结果不是我预期的

我的预期输出是有效的 json

[{
"Availab]ilityZone": "ap-east-1a",
  "Description": "AWS_FOO" ,
  "Groups": [
    {
      "GroupName": "AWS_FOO" ,
      "GroupId": "sg-AWS_FOO",
    } ,
    {
      "GroupName": "AWS_FOO" ,
      "GroupId": "sg-AWS_FOO",
    }
  ]
 },
 {
  "Availab]ilityZone": "ap-east-1a",
  "Description": "AWAWS_FOOAWS_FOO",
  "Groups": [
    {
      "GroupName": "AWS_FOO-eAWS_FOOAWS_FOO",
      "GroupId": "sAWS_FOO",
    },
    {
      "GroupName": "AWS_FOO",
      "GroupId": "AWS_FOO",
    }
  ] 
}]
json bash automation jq
1个回答
0
投票

这应该可以解决问题。

#!/bin/bash

VPC_ID=vpc-05ae0495871281736

NETWORK_INTERFACE=$(aws ec2 describe-network-interfaces --filters Name=vpc-id,Values="${VPC_ID}" --output json | jq -r '[.NetworkInterfaces[] | {AvailabilityZone, Description, Groups}]')

echo $NETWORK_INTERFACE

用您自己的值替换

VPC_ID

根据您的示例输出,我已过滤掉字段

AvailabilityZone
Description
Groups

脚本的输出只是一行有效的 JSON。您可以通过传递它来美化它

jq .

例如:

[
  {
    "AvailabilityZone": "eu-west-2c",
    "Description": "test",
    "Groups": [
      {
        "GroupName": "VNC",
        "GroupId": "sg-030848ac470abe56f"
      }
    ]
  },
  {
    "AvailabilityZone": "eu-west-2c",
    "Description": "",
    "Groups": [
      {
        "GroupName": "MOSH",
        "GroupId": "sg-06dff26a1939d90d7"
      },
      {
        "GroupName": "http(s)",
        "GroupId": "sg-048d4d5554f4a7da6"
      }
    ]
  }
]

© www.soinside.com 2019 - 2024. All rights reserved.