GitHub Actions中如何全局替换项目名特殊字符为连字符?
解决GitHub Actions中制品名称前缀全局替换特殊字符的问题
你当前的问题出在bash参数替换的语法上:bash里的${var/pattern/replacement}只会执行单次替换,要实现全局替换,得把单斜杠改成双斜杠//,而不是加正则的/g标记(那是sed、awk这类工具的语法)。
修改后的Set artifact prefix步骤代码如下:
- name: Set artifact prefix id: artifact_prefix run: | PROJECT_NAME=${{ matrix.project }} # 用双斜杠//实现全局替换所有非允许字符为连字符 ARTIFACT_PREFIX=${PROJECT_NAME//[^A-Za-z0-9\-]/-} echo "::set-output name=lowercase::${ARTIFACT_PREFIX,,}"
这样处理后:
- 对于
Common/Helpers.Tests,会把/和.全部替换成-,再转小写得到common-helpers-tests,符合你的预期。 - 对于
PlaywrightXunitParallel,因为没有特殊字符,结果就是playwrightxunitparallel。
如果后续需要把连续的多个连字符合并成一个(比如遇到Common//Helpers..Tests这种极端情况),可以再加一步处理:
# 合并连续连字符为单个 ARTIFACT_PREFIX=$(echo "$ARTIFACT_PREFIX" | tr -s '-')
内容的提问来源于stack exchange,提问作者Gucu112
相关产品推荐
相关产品推荐

