从“ aws ec2 describe-instances”输出中的方括号中获取价值

时间:2019-09-12 11:42:29

标签: bash

我将命令的输出保存在变量中,并在其他命令中使用

instance_id=$(aws ec2 describe-instances --query Reservations[*].Instances[*].[InstanceId] --filters "Name=tag:staging,Values=staging")

我得到此输出[[[“ i-09140824c1b7f9ea7”]]]

如何从输出中删除括号并在此命令的变量中使用它

aws ec2 associate-address --instance-id $instance_id --allocation-id allocid

我是bash的新手,所以我们将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以使用以下方法提取值并将从JSON解码为纯文本:

instance_id_json='[ [ [ "i-09140824c1b7f9ea7" ] ] ]'
instance_id=$(jq -r '.[][][]' <<<"$instance_id_json")

考虑将您的原始代码更改为:

instance_id_json=$(aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId]' --filters 'Name=tag:staging,Values=staging')

...请注意,我们将查询放在引号中(因为它具有glob字符),而不仅是过滤器(而且该过滤器旨在用作不带扩展名的文字文本,因此默认情况下为单引号)引号而不是形式的双引号。