Bash 变量神秘消失?AWS代码构建

Bash 变量神秘消失?AWS代码构建,bash,amazon-web-services,aws-codebuild,Bash,Amazon Web Services,Aws Codebuild,下面是我的buildspec.yml build: commands: - 'IMAGE_TAG=$(cat package.json | grep version | head -1 | awk -F: ''{ print $2 }'' | sed ''s/[",]//g'')' - echo $IMAGE_TAG - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG

下面是我的buildspec.yml

build:
        commands:
            - 'IMAGE_TAG=$(cat package.json | grep version | head -1 | awk -F: ''{ print $2 }'' | sed ''s/[",]//g'')'
            - echo $IMAGE_TAG
            - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
            - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG
以下是相关构建的输出:

 [Container] 2018/12/12 22:06:42 Running command IMAGE_TAG=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[",]//g')
 [Container] 2018/12/12 22:06:42 Running command echo $IMAGE_TAG <<< GOOD
1.0.0                           <<<< PERFECT
 [Container] 2018/12/12 22:06:42 Running command docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
invalid argument "gotbot-air:" for t: invalid reference format
See 'docker build --help'.     <<<<<< OH NO
 [Container] 2018/12/12 22:06:42 Command did not exit successfully docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG . exit status 125
[Container]2018/12/12 22:06:42运行命令IMAGE_TAG=$(cat package.json | grep version | head-1 | awk-F:“{print$2}”sed's/[”,]//g')

[容器]2018/12/12 22:06:42运行命令echo$IMAGE_TAG检查BuildSpec文件的版本。将其更改为版本:0.2


在版本0.1中,AWS CodeBuild在生成环境中默认shell的一个单独实例中运行每个生成命令。在版本0.2中,AWS CodeBuild在生成环境中默认shell的同一实例中运行所有生成命令。

My buildspec肯定在0.2上…如果不是,则两者之间的回音不应该正常工作?如何您是否认为IMAGE_标记是这里错误的部分?您收到的“gotbot air”参数无效,我看不出这与1.0.0变量有什么关系?什么是gotbot air?“gotbot air”“是变量$IMAGE\u REPO\u NAME的值。Docker正在抱怨,因为
-t gotbot air:
不是有效的参数。我希望它是
-t gotbot air:1.0.0
,这是有效的。好吧,你为什么不试试:
IMAGE\u TAG=$(cat-package.json | grep version | head-1 | awk-F:'{print$2}sed's/[,]/g')&docker build t-t$IMAGE\u REPO\u NAME:$IMAGE\u TAG。