如何将bash变量读入json

如何将bash变量读入json,json,bash,amazon-ec2,Json,Bash,Amazon Ec2,我需要标记我的ec2实例,并希望通过bash变量传递键和值 #!/bin/bash image="" instancetype=t2.small key1=name value1=test key2=cname value2=test123 aws ec2 run-instances --image-id $image --count 1 --instance-type $instancetype --tag-specifications 'ResourceType=instance,Tag

我需要标记我的ec2实例,并希望通过bash变量传递键和值

#!/bin/bash
image=""
instancetype=t2.small
key1=name
value1=test

key2=cname
value2=test123

aws ec2 run-instances --image-id $image --count 1 --instance-type $instancetype --tag-specifications 'ResourceType=instance,Tags=[{Key="$key1",Value="$value1"},{Key="$key2",Value="$value2"}]'

您需要双引号引用参数,转义任何要作为标记规范字符串的一部分传递的双引号

aws ec2 run-instances \
        --image-id "$image" \
        --count 1 \
        --instance-type "$instancetype" \
        --tag-specifications "ResourceType=instance,Tags=[{Key="\$key1\",Value=\"$value1\"},{Key=\"$key2\",Value=\"$value2\"}]"
我在对这个问题的评论中提到的警告同样适用:如果任何变量包含可能影响标记规范解析方式的值,那么在使用它们之前,需要对它们进行正确的转义。比如说

value2='test" " 3'  # Wrong
value2='test\" \" 3'  # Right
这个{Key=$key1,Value=$value1}。。。不是json符号如果您确实想要json,请使用jq生成它,而不是假设变量值不需要转义和使用shell插值。