Функции сравнения для шаблонов 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))]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
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": "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": "demo"
},
"secondString": {
"type": "string",
"defaultValue": "Demo"
},
"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 | Истина | |
checkStrings | Bool | False | Результат заключается в false том, что сравнение учитывает регистр. |
checkArrays | Bool | Истина | |
checkObjects | Bool | Истина |
В следующем примере шаблона используется 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 | Истина |
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'))]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
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'))]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
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'))]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
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'))]"
}
}
}
Выходные данные из предыдущего примера со значениями по умолчанию:
Имя. | Тип | значение |
---|---|---|
checkInts | Bool | Истина |
checkStrings | Bool | False |
Следующие шаги
- Описание разделов в шаблоне ARM приведено в статье Общие сведения о структуре и синтаксисе шаблонов ARM.