Поделиться через


Функции сравнения для шаблонов ARM

Resource Manager предоставляет ряд функций для выполнения сравнений в шаблонах Azure Resource Manager (шаблон ARM):

Совет

Bicep рекомендуется, так как он предлагает те же возможности, что и шаблоны ARM, и синтаксис проще использовать. Дополнительные сведения см. в описании логического оператора coalesce и операторов comparison.

coalesce

coalesce(arg1, arg2, arg3, ...)

Возвращает из параметров первое значение, отличное от null. Пустые строки, пустые массивы и пустые объекты не являются null.

В Bicep используйте вместо этого оператор ??. См. описание Coalesce ??.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число, строка, массив или объект Первое значение, которое проверяется на соответствие значению null.
дополнительные аргументы No целое число, строка, массив или объект Дополнительные значения для проверки на значение NULL.

Возвращаемое значение

Значение первых параметров, отличных от null, которое может быть строкой, целым числом, массивом или объектом. Null, если все параметры имеют значение null.

Пример

В следующем примере шаблона показаны выходные данные различных видов использования coalesce:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "null1": null,
        "null2": null,
        "string": "default",
        "int": 1,
        "object": { "first": "default" },
        "array": [ 1 ]
      }
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringOutput": {
      "type": "string",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').string)]"
    },
    "intOutput": {
      "type": "int",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').int)]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').object)]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2, parameters('objectToTest').array)]"
    },
    "emptyOutput": {
      "type": "bool",
      "value": "[empty(coalesce(parameters('objectToTest').null1, parameters('objectToTest').null2))]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
stringOutput Строка default
intOutput Int 1
objectOutput Object {"first": "default"}
arrayOutput Массив [1]
emptyOutput Bool Истина

равно

equals(arg1, arg2)

Проверяет, совпадают ли два значения. Сравнение учитывает регистр.

В Bicep используйте вместо этого оператор ==. См. описание Equals ==.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число, строка, массив или объект Первое значение, которое необходимо проверить на равенство.
arg2 Да целое число, строка, массив или объект Второе значение, которое необходимо проверить на равенство.

Возвращаемое значение

Возвращает результат True, если значения равны. В противном случае — False.

Замечания

Функция equals часто используется с элементом condition для проверки развертывания ресурса:

{
  "condition": "[equals(parameters('newOrExisting'),'new')]",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[variables('storageAccountName')]",
  "apiVersion": "2025-06-01",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[variables('storageAccountType')]"
  },
  "kind": "Storage",
  "properties": {}
}

Пример

В следующем примере различные типы значений проверяются на равенство. Все значения по умолчанию возвращают значение True:

 "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 1
    },
    "firstString": {
      "type": "string",
      "defaultValue": "demo"

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение Примечание.
checkInts Bool Истина
checkStrings Bool False Результат заключается в false том, что сравнение учитывает регистр.
checkArrays Bool Истина
checkObjects Bool Истина

Следующий пример шаблона используется not с равными значениями:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "checkNotEquals": {
      "type": "bool",
      "value": "[not(equals(1, 2))]"
    }
  }
}

Выходные данные из предыдущего примера:

Имя. Type значение
checkNotEquals Bool Истина

greater

greater(arg1, arg2)

Проверяет, больше ли первое значение, чем второе значение.

В Bicep используйте вместо этого оператор >. См. описание оператора больше >.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число или строка Первое значение для сравнения (является ли большим).
arg2 Да целое число или строка Второе значение для сравнения (является ли большим).

Возвращаемое значение

Возвращает результат True, если первое значение больше второго. В противном случае — False.

Пример

В следующем примере проверяется, больше ли одно значение, чем другое:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[greater(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[greater(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
checkInts Bool False
checkStrings Bool Истина

greaterOrEquals

greaterOrEquals(arg1, arg2)

Проверяет, больше ли первое значение или равно второму значению.

В Bicep используйте вместо этого оператор >=. См. описание оператора больше или равно >=.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число или строка Первое значение для сравнения (является ли большим или равным).
arg2 Да целое число или строка Второе значение для сравнения (является ли большим или равным).

Возвращаемое значение

Возвращает результат True, если первое значение больше или равно второму. В противном случае — False.

Пример

В следующем примере проверяется, больше ли одно значение или равно другому:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[greaterOrEquals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[greaterOrEquals(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
checkInts Bool False
checkStrings Bool Истина

less

less(arg1, arg2)

Проверяет, меньше ли первое значение, чем второе значение.

В Bicep используйте вместо этого оператор <. См. описание оператора меньше <.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число или строка Первое значение для сравнения (является ли меньшим).
arg2 Да целое число или строка Второе значение для сравнения (является ли меньшим).

Возвращаемое значение

Возвращает результат True, если первое значение меньше второго. В противном случае — False.

Пример

В следующем примере проверяется, меньше ли одно значение, чем другое:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[less(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[less(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
checkInts Bool Истина
checkStrings Bool False

lessOrEquals

lessOrEquals(arg1, arg2)

Проверяет, меньше ли первое значение или равно второму значению.

В Bicep используйте вместо этого оператор <=. См. описание оператора меньше или равно <=.

Параметры

Параметр Обязательное поле Type Описание
arg1 Да целое число или строка Первое значение для сравнения (является ли меньшим или равным).
arg2 Да целое число или строка Второе значение для сравнения (является ли меньшим или равным).

Возвращаемое значение

Возвращает результат True, если первое значение меньше или равно второму. В противном случае — False.

Пример

В следующем примере проверяется, меньше ли одно значение или равно другому:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstInt": {
      "type": "int",
      "defaultValue": 1
    },
    "secondInt": {
      "type": "int",
      "defaultValue": 2
    },
    "firstString": {
      "type": "string",
      "defaultValue": "A"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[lessOrEquals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[lessOrEquals(parameters('firstString'), parameters('secondString'))]"
    }
  }
}

Выходные данные значений по умолчанию из предыдущего примера:

Имя. Type значение
checkInts Bool Истина
checkStrings Bool False

Следующие шаги

Описание разделов в шаблоне ARM приведено в статье Общие сведения о структуре и синтаксисе шаблонов ARM.