用于在 json 输出中返回值的 shell 命令



如何使用shell命令返回特定值?在下面的示例中,我想查询以返回"StackStatus"的值,即"CREATE_COMPLETE">

这是命令:

aws cloudformation describe-stacks --stack-name stackname

这是输出:

{
        "Stacks": [{
            "StackId": "arn:aws:cloudformation:ap-southeast-2:64560756805470:stack/stackname/8c8e3330-9f35-1er6-902e-50fae94f3fs42",
            "Description": "Creates base IAM roles and policies for platform management",
            "Parameters": [{
                "ParameterValue": "64560756805470",
                "ParameterKey": "PlatformManagementAccount"
            }],
            "Tags": [],
            "CreationTime": "2016-10-31T06:45:02.305Z",
            "Capabilities": [
                "CAPABILITY_IAM"
            ],
            "StackName": "stackname",
            "NotificationARNs": [],
            "StackStatus": "CREATE_COMPLETE",
            "DisableRollback": false
        }]
    }

aws cli 支持 --query 选项来获取部件。此外,您还可以通过管道连接到另一个命令行工具jq来执行类似的查询。

但是在 aws 表示法中要获得第一个结果:

aws cloudformation describe-stacks --stack-name stackname --query 'Stacks[0].StackStatus' --output text

基于上面的输出,Stacks 是一个对象数组(键/值(,因此需要 [0] 来获取数组的第一个元素,然后 .堆栈状态是此对象中的一个键,其中包含一个字符串作为值。 --output 文本只是将输出呈现为简单的文本值,而不是看起来像 json 的对象。

根据查尔斯评论编辑。

最新更新