如何在AWS CLI命令中使用环境变量

时间:2019-07-10 18:21:21

标签: aws-cli

我运行此命令,它有效:

aws elb describe-load-balancers --query 'LoadBalancerDescriptions[?VPCId==`vpc-#########`]|[].LoadBalancerName' --region us-east-2

如果我尝试使用environemnt变量,它将不起作用:

aws elb describe-load-balancers --query 'LoadBalancerDescriptions[?VPCId==`$VPC_ID`]|[].LoadBalancerName' --region us-east-2

我知道VPC_ID有效-echo $ VPC_ID返回正确的值

我没看到什么?

谢谢!!!!!


我也尝试了此命令,结果相同:

这很好用: aws elb describe-load-balancers --output text --query 'LoadBalancerDescriptions[?Instances[?InstanceId==`i-0############`]].[LoadBalancerName]' --region us-east-2

这不返回任何内容: aws elb describe-load-balancers --output text --query 'LoadBalancerDescriptions[?Instances[?InstanceId=="$InstanceID"]].[LoadBalancerName]' --region us-east-2

我知道环境变量$ InstanceID已填充且正确-我执行echo $ InstanceID并获得正确的ID输出。

2 个答案:

答案 0 :(得分:1)

知道了!

环境变量必须放在方括号中-{}

这有效-

aws elb describe-load-balancers --output text --query "LoadBalancerDescriptions[?Instances[?InstanceId=='${InstanceID}']].LoadBalancerName" --region us-east-2

答案 1 :(得分:0)

我可以使用以下方法重现此内容:

export MY_VPC_ID=vpc-1234
echo 'LoadBalancerDescriptions[?VPCId==`$MY_VPC_ID`]|[].LoadBalancerName'

输出

LoadBalancerDescriptions[?VPCId==`$MY_VPC_ID`]|[].LoadBalancerName

我认为这与bash如何解释引号有关,如另一篇文章中所示 Evaluating variables in a string

您可以尝试使用它吗?

echo "LoadBalancerDescriptions[?VPCId==\"$MY_VPC_ID\"]|[].LoadBalancerName"

输出LoadBalancerDescriptions[?VPCId=="vpc-1234"]|[].LoadBalancerName