2016-04-06 16 views
1

EC2インスタンスのリストを取得してから、ループしていますが、何らかの理由でループを動作させることができません。AWSコマンドラインクライアントからの出力をループスルーするためのBashスクリプト

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-西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の出力形式を使用して、結果をループするより良い方法がありますか? Windows用

+0

$出力で 'for i 'を実行してください。 echo $ iを実行します。 done' – alnet

+0

私はそれを試みました、それは変数全体をエコーし​​ます。行を分割しません。 –

+2

何について: 'for i in" $ {instances [@]} ";どうすればいい? – alnet

答えて

0

は、CLI:

AWS EC2 --query-インスタンスを記述する。 "[]予約インスタンス[]のInstanceId">インスタンス

FOR/F%のI(インスタンス)DO AWS EC2終了します-instances --instance-ids%i

+0

質問はbashスクリプト –

0

この質問に対する回答があるかどうかはわかりません。これは役に立ちますか?

for dns in $(aws ec2 describe-instances --region ap-northeast-1 --query 'Reservations[*].Instances[*].PublicDnsName' --output text) ; do echo $dns ; done 
関連する問題