Compartir a través de


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 Type 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 idénticos. En la comparación se distinguen mayúsculas de minúsculas.

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

Parámetros

Parámetro Obligatorio Type 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": "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'))]"
    }
  }
}

La salida del ejemplo anterior con el valor predeterminado es:

Nombre Tipo Value Nota:
checkInts Bool True
checkStrings Bool False El resultado es false porque la comparación distingue mayúsculas de minúsculas.
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 Type 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 Type 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 Type 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 Type 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