根据以下输出,看起来只有ZONES1是数组,其他两个是字符串,为什么?
$ ZONES0=$(aws ec2 describe-availability-zones --region ap-southeast-2 --query AvailabilityZones[*].ZoneId[] --output text)
echo ${ZONES0[0]}
apse2-az3 apse2-az1 apse2-az2
$ ZONES1=(`aws ec2 describe-availability-zones --region ap-southeast-2 --query AvailabilityZones[*].ZoneId[] --output text`)
$echo ${ZONES1[0]}
$ apse2-az3
$ ZONES2=$(aws ec2 describe-availability-zones --region ap-south-1 | jq -r '.AvailabilityZones[].ZoneId')
$echo ${ZONES2[0]}
aps1-az1 aps1-az3 aps1-az2
如果我跑步
ZONES0=( $(aws ec2 describe-availability-zones --region ap-southeast-2 --query AvailabilityZones[*].ZoneId[] --output text) ).
输出如下
$ echo $ZONES0
apse2-az3
$ echo $ZONES0[0]
apse2-az3[0]
答案 0 :(得分:0)
ZONES1
是数组,因为在bash中可以使用以下形式的compound assignments来定义数组:
name=(value1 value2 … )
因此您的表达式返回apse2-az3 apse2-az1 apse2-az2
,该(...)
放在ZONES0
中以声明数组。
如果您想对ZONES0=( $(aws ec2 describe-availability-zones --region ap-southeast-2 --query AvailabilityZones[*].ZoneId[] --output text) )
做同样的事情,只需将其放在复合作业中即可:
char number[32];
sprintf(number, "%d", NUMBER_APPLES)