Azure Pipelines Replace Tokens任务无法保留特殊字符求助
Azure Pipelines Replace Tokens任务保留特殊字符
$的解决方案 问题根源
Replace Tokens任务会识别特定格式的令牌(若配置中令牌前缀为$,或任务默认解析$开头的内容为令牌),输入字符串中的$fa34、$M被误判为未定义的令牌,因此被替换为空字符串,导致输出异常。
解决方案
方案一:调整令牌格式,避开$
修改Replace Tokens任务的令牌分隔符,让任务仅识别非$开头的令牌,输入中的$即可原样保留:
- 编辑Pipeline中的Replace Tokens任务
- 切换到Advanced选项卡
- 将Token prefix设置为
#{,Token suffix设置为}#(这是任务默认值,若之前修改过则改回) - 确保需要替换的令牌统一使用
#{TOKEN_TO_REPLACE}#格式
方案二:转义输入中的普通$
若必须使用$作为令牌分隔符,需将输入字符串中的普通$转义为$$:
- 原输入:
88wLz5$fa34$!-$M - 修改后输入:
88wLz5$$fa34$$!-$$M
Replace Tokens任务会自动将$$解析为单个$,同时正常处理预设的$TOKEN$格式令牌。
方案三:保留未定义令牌(灵活性较差)
若任务支持preserveTokens参数,可指定需要保留的未定义令牌:
在任务配置的Advanced选项中,添加preserveTokens: '$fa34,$M',任务会将指定的$开头内容原样保留,仅替换已定义的令牌。
验证效果
配置完成后重新运行Pipeline,输入字符串88wLz5$fa34$!-$M会输出预期结果:88wLz5$fa34$!-$M,同时预设令牌可正常替换。
内容的提问来源于stack exchange,提问作者Srikanth Mannepalli
相关产品推荐
相关产品推荐

