我将命令的输出保存在变量中,并在其他命令中使用
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的新手,所以我们将不胜感激。
答案 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字符),而不仅是过滤器(而且该过滤器旨在用作不带扩展名的文字文本,因此默认情况下为单引号)引号而不是形式的双引号。