【发布时间】:2020-09-07 20:28:35
【问题描述】:
我正在通过 teamcity 步骤在 bash 脚本中运行以下 awscli 命令
#!/bin/bash
repo=%env.RepoName%
echo "repo is ${repo}"
tags=%env.Tags%
echo "tags are ${tags}"
aws ecr create-repository --repository-name ${repo} --tags '${tags}'
其中%env.RepoName% 和%env.Tags% 是teamcity 变量,其值分别为sample-repo 和[{"Key":"env","Value":"dev"},{"Key":"dept","Value":"finance"}]。但是,当 aws cli 命令运行时,会出现以下错误
Expecting property name enclosed in double quotes: line 1 column 3 (char 2)
但是,如果我使用单引号将%env.Tags% 的值作为'[{"Key":"env","Value":"dev"},{"Key":"dept","Value":"finance"}]' 传递,并从aws cli 命令的tags 属性中排除'',它运行没有问题。
我缺少什么,有推荐的方法来解决这个问题吗?
【问题讨论】:
-
单引号抑制扩展,因此您实际上是在发送
${tags}而不是其内容。 -
@Aserre 和本杰明谢谢。上面的链接解释了为什么这不起作用。但我仍然不确定如何解决我的特定问题。请问您有什么想法吗?
-
换句话说,有没有办法可以在传递输入时排除
' '并仍然使 aws-cli 命令在 bash 脚本中工作?
标签: bash amazon-web-services aws-cli amazon-ecr