【发布时间】:2015-02-11 05:52:41
【问题描述】:
我在 EC2 AWS-AMI Linux 上执行作为脚本一部分的命令时遇到问题。
作为命令的一部分,我必须将一些变量传递给 CLI,包括 --subnet-ids "subnet-c123456" "subnet-b123456" "subnet-a123456" 这样的引号,因此我将代码块创建为
#!/bin/sh
set -x
......
MySubnetA="subnet-a123456"
MySubnetB="subnet-b123456"
MySubnetC="subnet-c123456"
$(aws --profile myProfile --region myRegion rds create-db-subnet-group --db-subnet-group-name ${!1} --db-subnet-group-description ${!1} --subnet-ids \"${MySubnetA}\" \"${MySubnetB}\" \"${MySubnetC}\" --tags Key=Name,Value=${!1})
当我运行脚本时,输出显示的命令在转义的双引号周围带有单引号,这会导致 CLI 失败。
++ aws --profile myProfile --region us-west-1 rds create-db-subnet-group --db-subnet-group-name myDBgroup --db-subnet-group-description myDBgroup --subnet-ids '"subnet-a123456"' '"subnet-b123456"' '"subnet-c123456"' --tags Key=Name,Value=myDBgroup
如何传递命令,使双引号不包含在单引号中。
更新
根据下面的评论,如果我回显命令字符串,然后在终端中复制/粘贴运行,则命令按预期执行。但是当在脚本中运行时它会失败。 bash 脚本是否会在命令中添加额外的字符导致它失败?
谢谢 艺术
【问题讨论】: