我正在获取 EC2 实例列表,然后尝试循环遍历它们,但出于某种原因我无法使循环正常工作。
output="$(aws ec2 describe-instances --filters 'Name=tag:Environment,Values=development' --query '[Reservations[*].Instances[*].PublicDnsName]' --输出文本)”
echo $output
显示如下内容:
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]}
给出了正确的输出。
然后尝试遍历数组:
我在 $instances 中;做 echo 实例:“$i”;完成
但是我得到:
实例:ec2-55-55-555-555.eu-west-1.compute.amazonaws.com 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 dns in $(aws ec2 describe-instances --region ap-northeast-1 --query 'Reservations[*].Instances[*].PublicDnsName' --output text) ; do echo $dns ; done
关于循环访问 AWS 命令行客户端输出的 Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452555/