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用
$出力で 'for i 'を実行してください。 echo $ iを実行します。 done' – alnet
私はそれを試みました、それは変数全体をエコーします。行を分割しません。 –
何について: 'for i in" $ {instances [@]} ";どうすればいい? – alnet