我正在获取EC2实例的列表,然后尝试遍历它们但由于某种原因我无法使循环工作。
output="$(aws ec2 describe-instances --filters 'Name=tag:Environment,Values=development' --query '[Reservations[*].Instances[*].PublicDnsName]' --output text)"
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]}
给出正确的输出。
然后尝试遍历数组:
for i in $instances; do echo instance: "$i"; done
但我明白了:
实例: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输出格式?
答案 0 :(得分:4)
我不确定你是否得到了这个问题的答案。这会有帮助吗?
set var1=(the string from brownfox.csv)
set var2=%var1%
set i=0
:loopprocess
for /F "tokens=1* delims=;" %%A in ( "%var1%" ) do (
set /A i+=1
set var1=%%B
goto loopprocess )
echo The string contains %i% tokens.
答案 1 :(得分:0)
对于windows cli:
aws ec2 describe-instances --query“Reservations [] .Instances [] .InstanceId”>实例
FOR / f%i IN(实例)DO ecs terminate-instances --instance-ids%i