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/}"
我正在使用 AWS CodeBuild,我需要操作一个环境变量。我最初尝试在 buildspec.yml
:
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/}"