<p><code>output="$(aws ec2 describe-instances --filters 'Name=tag:Environment,Values=development' --query '[Reservations[*].Instances[*].PublicDnsName]' --output text)"</code></p>
<p><code>echo $output</code>
显示类似以下内容:
ec2-55-55-555-555.eu-west-1.compute.amazonaws.com
ec2-66-66-666-666.eu-west-1.compute.amazonaws.com
然后我创建一个这样的数组:
instances=(${output//'\n'/ })
echo ${instances[0]}
和echo ${instances[1]}
输出正确。
然后尝试遍历数组:
for i in "${instances[@]}"; do echo instance: "$i"; done
但输出以下内容:
instance: ec2-55-55-555-555.eu-west-1.compute.amazonaws.com
instance: ec2-66-66-666-666.eu-west-1.compute.amazonaws.com
而不是:
instance: ec2-55-55-555-555.eu-west-1.compute.amazonaws.com
instance: ec2-66-66-666-666.eu-west-1.compute.amazonaws.com
我哪里做错了?有没有更好的方法来循环遍历结果,也许可以使用 JSON 输出格式而不是当前的方法?
for i in $output; do echo $i; done
。 - alnetfor i in "${instances[@]}"; do ...
是什么意思? - alnettr ' ' '\n'
现在它可以工作了。 - Mikhail Janowski