AWS CodeBuild,buildspec.yml "bad substitution" 错误

AWS CodeBuild, buildspec.yml "bad substitution" error

我正在使用 AWS CodeBuild,我需要操作一个环境变量。我最初尝试在 buildspec.yml:

中使用 bash 模式替换,就像这样
  build:
    on-failure: ABORT
    commands:
      - env="${CODEBUILD_WEBHOOK_TRIGGER/tag\//}"

CODEBUILD_WEBHOOK_TRIGGER 应该是 tag/my-tag-name 之类的,我想删除其中的 tag/ 部分。此命令在本地 bash shell 中运行良好,但在 CodeBuild 中执行时,输出如下:

[Container] 2021/08/02 21:29:28 Running command env="${CODEBUILD_WEBHOOK_TRIGGER/tag\//}"
/codebuild/output/tmp/script.sh: 4: Bad substitution
...
[Container] 2021/08/02 21:29:28 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: env="${CODEBUILD_WEBHOOK_TRIGGER/tag\//}". Reason: exit status 2

我最终用 awk 命令替换了模式替换,只是为了让它工作,但它会产生更复杂的代码。而且我不明白为什么模式替换不起作用?

这是我最终使用的 awk 命令,它运行良好:

  build:
    on-failure: ABORT
    commands:
      - env="`echo $CODEBUILD_WEBHOOK_TRIGGER | awk -F/ '=="tag" {print ;}'`"

CodeBuild 可能未使用 bash。试试这个:

env="${CODEBUILD_WEBHOOK_TRIGGER#tag/}"