Funciones de comparación para plantillas de ARM

Resource Manager ofrece varias funciones para realizar comparaciones en las plantillas de Azure Resource Manager:

Sugerencia

Se recomienda Bicep porque ofrece las mismas funcionalidades que las plantillas de ARM y la sintaxis es más fácil de usar. Para obtener más información, consulte el operador lógico coalesce y los operadores de comparación.

coalesce

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

Devuelve el primer valor no nulo de los parámetros. Las cadenas vacías, las matrices vacías y los objetos vacíos no son nulos.

En Bicep, use el operador ?? en su lugar. Vea Coalesce ??.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 int, string, array u object El primer valor para comprobar si hay valores nulos.
más argumentos No int, string, array u object Más valores para probar si hay valores nulos.

Valor devuelto

El valor de los primeros parámetros que no son nulos, que puede ser una cadena, un entero, una matriz o un objeto. Es nulo si todos los parámetros son nulos.

Ejemplo

En la plantilla de ejemplo siguiente se muestra el resultado de los diferentes usos de 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))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
stringOutput String default
intOutput Int 1
objectOutput Object {"first": "default"}
arrayOutput Array [1]
emptyOutput Bool True

equals

equals(arg1, arg2)

Comprueba si dos valores son iguales.

En Bicep, use el operador == en su lugar. Vea Equals ==.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 int, string, array u object El primer valor en el que comprobar la igualdad.
arg2 int, string, array u object El segundo valor en el que comprobar la igualdad.

Valor devuelto

Devuelve True si los valores son iguales; en caso contrario, False.

Comentarios

La función equals se suele usar con el elemento condition para comprobar si está implementado un recurso.

{
  "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": {}
}

Ejemplo

En el ejemplo siguiente se comprueba la igualdad de diferentes tipos de valores. Todos los valores predeterminados devuelven 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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
checkInts Bool True
checkStrings Bool True
checkArrays Bool True
checkObjects Bool True

En la plantilla de ejemplo siguiente se usa not con 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))]"
    }
  }
}

El resultado del ejemplo anterior es:

Nombre Tipo Valor
checkNotEquals Bool True

greater

greater(arg1, arg2)

Comprueba si el primer valor es mayor que el segundo.

En Bicep, use el operador > en su lugar. Vea Mayor que >.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 entero o cadena El primer valor de la comparación mayor.
arg2 entero o cadena El segundo valor de la comparación mayor.

Valor devuelto

Devuelve True si el primer valor es mayor que el segundo; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se comprueba si un valor es mayor que el otro.

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

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
checkInts Bool False
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

Comprueba si el primer valor es mayor o igual que el segundo.

En Bicep, use el operador >= en su lugar. Vea Mayor o igual que >=.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 entero o cadena El primer valor de la comparación mayor o igual.
arg2 entero o cadena El segundo valor de la comparación mayor o igual.

Valor devuelto

Devuelve True si el primer valor es mayor o igual que el segundo; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se comprueba si un valor es mayor o igual que el otro.

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

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
checkInts Bool False
checkStrings Bool True

less

less(arg1, arg2)

Comprueba si el primer valor es menor que el segundo.

En Bicep, use el operador < en su lugar. Vea Menor que <.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 entero o cadena El primer valor de la comparación menor.
arg2 entero o cadena El segundo valor de la comparación menor.

Valor devuelto

Devuelve True si el primer valor es menor que el segundo; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se comprueba si un valor es menor que el otro.

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

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
checkInts Bool True
checkStrings Bool False

lessOrEquals

lessOrEquals(arg1, arg2)

Comprueba si el primer valor es menor o igual que el segundo.

En Bicep, use el operador <= en su lugar. Vea Menor o igual que <=.

Parámetros

Parámetro Obligatorio Tipo Descripción
arg1 entero o cadena El primer valor de la comparación menor o igual.
arg2 entero o cadena El segundo valor de la comparación menor o igual.

Valor devuelto

Devuelve True si el primer valor es menor o igual que el segundo; en caso contrario, False.

Ejemplo

En el ejemplo siguiente se comprueba si un valor es menor o igual que el otro.

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

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value
checkInts Bool True
checkStrings Bool False

Pasos siguientes