我在运行适用于 AWS EC2 的 CLI 时尝试在筛选条件中传递环境变量。
例如,我想在此代码片段中为 vpc-id 和 cidr 块传递环境变量
$ aws ec2 describe-subnets --filter 'Name=vpc-id,Values=vpc-0ce822f7ef200f28k',"Name=cidr-block,Values=10.0.0.0/24" --query "Subnets[].SubnetId" --output=text --region=us-west-1
subnet-0ec2d15eda8f20484
我正在尝试这个:
aws ec2 describe-subnets --filter 'Name=vpc-id,Values=$EC2_VPC_ID','Name=cidr-block,Values=$EC2_CIDR_BLOCK' --query "Subnets[].SubnetId" --output=text --region=us-west-1
但它不起作用。它尝试了多种组合,例如 -
aws ec2 describe-subnets --filter "Name=vpc-id,Values='$EC2_VPC_ID'","Name=cidr-block,Values='$EC2_CIDR_BLOCK'" --query "Subnets[].SubnetId" --output=text --region=us-west-1
aws ec2 describe-subnets --filter "Name=vpc-id,Values=$EC2_VPC_ID","Name=cidr-block,Values=$EC2_CIDR_BLOCK" --query "Subnets[].SubnetId" --output=text --region=us-west-1
aws ec2 describe-subnets --filter 'Name=vpc-id,Values='$EC2_VPC_ID'','Name=cidr-block,Values='$EC2_CIDR_BLOCK'' --query "Subnets[].SubnetId" --output=text --region=us-west-1
它们都不起作用!!
顺便说一句,这以前是有效的,最近停止工作。
aws ec2 describe-subnets --filter 'Name=vpc-id,Values='$EC2_VPC_ID'','Name=cidr-block,Values='$EC2_CIDR_BLOCK'' --query "Subnets[].SubnetId" --output=text --region=us-west-1
这有效(在 Amazon Linux 上(:
aws ec2 describe-subnets --filter "Name=vpc-id,Values=$EC2_VPC_ID,Name=cidr-block,Values=$EC2_CIDR_BLOCK" --query "Subnets[].SubnetId" --output text
不能在 BASH 或 shell 脚本中以单引号传递变量。这是 Shell 脚本的基本 1-0-1。它需要在变量周围使用双引号。
例如:
a=2
echo $a
echo "$a"
echo '$a'
输出将是:
2
2
$a