You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARM模板如何设置变量值及Or条件的正确使用

错误原因分析

第一次写法报错原因

  • ARM模板的equals函数仅支持两个参数做等值比较,不支持直接和or函数返回值匹配多个目标值的写法
  • 你将or()直接作为equals的第二个入参,且or()的入参全部为字符串类型,不符合or函数要求入参为布尔值的语法规则,最终触发语法解析错误。

第二次写法报错原因

  • or函数要求所有入参必须为布尔类型,但你在if分支中返回的是字符串格式的'true'/'false',类型不匹配导致验证失败。
  • 写法冗余,没必要为每个sku单独写if判断。
正确实现方案

最简洁的实现方式是使用contains函数配合合法sku白名单数组判断,代码如下:

"variables": {
    "alwaysOnAllowedSkus": ["P1","P2","P3","P1V2","P2V2","P3V2","S1","S2","S3"],
    "isAlwayOnEnable": "[contains(variables('alwaysOnAllowedSkus'), parameters('skuName'))]"
}

如果需要用or函数实现,可直接将多个equals判断作为or的入参,不需要额外套if也不需要加字符串引号:

"variables": {
    "isAlwayOnEnable": "[or(equals(parameters('skuName'),'S1'), equals(parameters('skuName'),'S2'), equals(parameters('skuName'),'S3'), equals(parameters('skuName'),'P1'), equals(parameters('skuName'),'P2'), equals(parameters('skuName'),'P3'), equals(parameters('skuName'),'P1V2'), equals(parameters('skuName'),'P2V2'), equals(parameters('skuName'),'P3V2'))]"
}

以上两种写法返回的都是原生布尔值,可直接在后续资源配置中引用。

内容的提问来源于stack exchange,提问作者Pramod Lawate

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:18:00