Bash jq与select+awk

Bash jq与select+awk,bash,amazon-web-services,awk,jq,aws-cli,Bash,Amazon Web Services,Awk,Jq,Aws Cli,我试图获取一个从AWS的cli返回的JSON数组,循环遍历每个项目,并调用另一个AWS命令以获取有关资源的更多详细信息。我对另一种方法持开放态度,这就是我现在的方法 我正在调用AWS来获取初始列表,并将其传递到jq,以便能够从JSON列表中的每个对象提取一个属性,将输出传递到awk以生成一个新的generate,并为第一个列表中的每个项执行一个新命令。我可以通过以下几点来实现这一点: 无选择工作 但是,如果某个条件有效,我需要过滤每个命令的响应以仅输出属性,这就是我遇到的问题。我正在使用的更新命

我试图获取一个从AWS的cli返回的JSON数组,循环遍历每个项目,并调用另一个AWS命令以获取有关资源的更多详细信息。我对另一种方法持开放态度,这就是我现在的方法

我正在调用AWS来获取初始列表,并将其传递到jq,以便能够从JSON列表中的每个对象提取一个属性,将输出传递到awk以生成一个新的generate,并为第一个列表中的每个项执行一个新命令。我可以通过以下几点来实现这一点:

无选择工作

但是,如果某个条件有效,我需要过滤每个命令的响应以仅输出属性,这就是我遇到的问题。我正在使用的更新命令:

添加select时失败

aws acm列表证书| jq'.CertificateSummaryList[].CertificateEarn'| awk'{c=systemaws acm描述证书-证书arn$1 | jq'.证书| select.InUseBy!=null“;}” 引发以下错误:

未找到匹配项:选择。InUseBy!=空;} awk:非终止字符串| jq.Cer。。。在源代码行1处 上下文是
>>>使用多次转义是一个错误源,几乎不可能维护,并且随时都可能中断;当中间生成的输出转义并注入无人参与的语法时

我建议您使用bash处理循环:

!/usr/bin/env bash 读写时;做 aws acm描述证书-证书arn$arn| jq'.Certificate | select.InUseBy | length>0 |.InUseBy,.Type'
使用多次转义是一个错误源,几乎不可能维护,并且随时可能中断;当中间生成的输出转义并注入无人参与的语法时

我建议您使用bash处理循环:

!/usr/bin/env bash 读写时;做 aws acm描述证书-证书arn$arn| jq'.Certificate | select.InUseBy | length>0 |.InUseBy,.Type' 完成<
aws acm list-certificates |
jq '.CertificateSummaryList[].CertificateArn' |
awk '{ c=system("aws acm describe-certificate --certificate-arn "$1 " | jq '''.Certificate.InUseBy,.Certificate.DomainName,.Certificate.CertificateArn'''"); }'
aws acm list-certificates |
jq '.CertificateSummaryList[] | select (.CertificateArn=="arn:aws:acm:us-east-1:000000000000:certificate/00000000-0000-0000-0000-000000000000").CertificateArn' |
xargs aws acm describe-certificate --certificate-arn |
jq '.Certificate | select( (.InUseBy | length) > 0) | .InUseBy, .Type'
{
    "CertificateSummaryList": [
        {
            "CertificateArn": "arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012",
            "DomainName": "www.example.com"
        },
        {
            "CertificateArn": "arn:aws:acm:us-east-1:493619779192:certificate/87654321-4321-4321-4321-210987654321",
            "DomainName": "www.example.net"
        }
    ]
}