循环访问 AWS 命令​​行客户端输出的 Bash 脚本

标签 bash loops aws-cli amazon-ec2

我正在获取 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/

相关文章:

bash - 将 AppleScript 添加到 Bash 脚本

linux - 如何找到在另一个文件 X 分钟内创建的文件?

C++ boost : Any gotchas with BOOST_FOREACH?

amazon-web-services - 如何使用AWS CLI查找EC2实例的操作系统

amazon-web-services - AWS S3 Glacier 上传存档需要很长时间才能完成执行 - 检查状态或加快上传速度的方法?

bash - 在 Bash 中跳转到命令中的一个单词

bash - 如何修改以下 ps 命令以以逗号分隔值 (CSV) 格式打印?

java - 循环处理异常

c# - 单击按钮退出循环 - C#

python - 当 AWS-CLI 在 Python 中作为子进程运行时未指定 AWS 同步参数