ADF管道表达式报错:equals函数参数异常及路径校验需求咨询
问题修复与逻辑调整
报错原因
你的表达式存在括号嵌套错误,equals函数需要传入2个参数进行比较,但原代码将第二个substring的括号写在了equals的括号外部,导致equals仅接收到1个参数,触发报错:
function 'equals' does not accept 1 argument(s)
原错误代码:
@string(equals(substring(pipeline().globalParameters.ENVIRONMENT_ROOT_FOLDER,0,2)),(substring(pipeline().parameters.TargetPath),1,3)))
需求匹配的正确表达式
你的核心需求是:检查目标路径是否包含当前环境标识,包含则返回false,不包含则返回true。原代码用equals判断“相等”不符合需求,应该改用contains判断“包含”,同时修正括号问题,还可以统一大小写避免匹配误差:
@not(contains(toLower(pipeline().parameters.TargetPath), toLower(substring(pipeline().globalParameters.ENVIRONMENT_ROOT_FOLDER, 0, 3))))
表达式说明
toLower(...):将环境标识和目标路径统一转成小写,避免因大小写差异导致匹配失败(比如DEV环境匹配dev路径)contains(目标路径, 环境标识):判断目标路径是否包含环境标识子串not(...):对contains的结果取反,满足“包含则返回false,不包含返回true”的需求
如果你的环境标识确实只需要前2个字符(比如取DE匹配dev),可以把substring的第三个参数改成2即可。
内容的提问来源于stack exchange,提问作者RubenSo
相关产品推荐
相关产品推荐

