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

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

Совет

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

coalesce

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

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

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

Параметры

Параметр Обязательно Тип Описание
arg1 Да целое число, строка, массив или объект Первое значение, которое проверяется на соответствие значению null.
дополнительные аргументы Нет целое число, строка, массив или объект Дополнительные значения для проверки на значение 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))]"
    }
  }
}

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

Имя Тип Значение
stringOutput Строка default
intOutput Int 1
objectOutput Объект {"first": "default"}
arrayOutput Array  [1]
emptyOutput Bool True

equals

equals(arg1, arg2)

Проверяет, являются ли два значения равными.

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

Параметры

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

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

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

Remarks

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

{
  "condition": "[equals(parameters('newOrExisting'),'new')]",
  "type": "Microsoft.Storage/storageAccounts",
  "name": "[variables('storageAccountName')]",
  "apiVersion": "2022-09-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": "a"
    },
    "secondString": {
      "type": "string",
      "defaultValue": "a"
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "a", "b" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "a", "b" ]
    },
    "firstObject": {
      "type": "object",
      "defaultValue": { "a": "b" }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": { "a": "b" }
    }
  },
  "resources": [
  ],
  "outputs": {
    "checkInts": {
      "type": "bool",
      "value": "[equals(parameters('firstInt'), parameters('secondInt') )]"
    },
    "checkStrings": {
      "type": "bool",
      "value": "[equals(parameters('firstString'), parameters('secondString'))]"
    },
    "checkArrays": {
      "type": "bool",
      "value": "[equals(parameters('firstArray'), parameters('secondArray'))]"
    },
    "checkObjects": {
      "type": "bool",
      "value": "[equals(parameters('firstObject'), parameters('secondObject'))]"
    }
  }
}

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

Имя Тип Значение
checkInts Bool True
checkStrings Bool True
checkArrays Bool True
checkObjects Bool True

В следующем примере шаблона используется not и equals.

{
  "$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))]"
    }
  }
}

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

Имя Тип Значение
checkNotEquals Bool True

greater

greater(arg1, arg2)

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

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

Параметры

Параметр Обязательно Тип Описание
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'))]"
    }
  }
}

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

Имя Тип Значение
checkInts Bool Неверно
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

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

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

Параметры

Параметр Обязательно Тип Описание
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'))]"
    }
  }
}

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

Имя Тип Значение
checkInts Bool Неверно
checkStrings Bool True

less

less(arg1, arg2)

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

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

Параметры

Параметр Обязательно Тип Описание
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'))]"
    }
  }
}

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

Имя Тип Значение
checkInts Bool True
checkStrings Bool Неверно

lessOrEquals

lessOrEquals(arg1, arg2)

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

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

Параметры

Параметр Обязательно Тип Описание
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'))]"
    }
  }
}

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

Имя Тип Значение
checkInts Bool True
checkStrings Bool Неверно

Дальнейшие действия