AUTOSCALING_NODES=$(aws elb describe-load-balancers --load-balancer-names $ELB_NAME --query LoadBalancerDescriptions[0].Instances --output text)
declare -a IP_ARRAY=($AUTOSCALING_NODES)
for i in ${IP_ARRAY[*]}; do ipaddress=$(aws ec2 describe-instances --instance-id $i --query Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress --output text);
echo $ipaddress
这些ips是上面awscli的输出。这些应放在一个变量中,逗号分隔为string.10.0.0.0 10.0.0.000
答案 0 :(得分:0)
您正在覆盖循环中的ipaddress
变量。相反,将它附加到数组,然后在循环之后格式化它:
declare -a ipaddress
for i in "${IP_ARRAY[@]}"; do
ipaddress+=($(aws ec2 describe-instances --instance-id $i --query \
Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].PrivateIpAddress \
--output text));
done
ipaddresses=$(printf '%s\n' "${ipaddresses[@]}" | sort -u | paste -sd, - | sed 's/,$//')
+=
将结果作为新元素printf ... | sort -u | paste ...
将重复数据删除的数组转换为逗号分隔列表