Funções de comparação para modelos ARM

O Resource Manager fornece várias funções para fazer comparações no seu modelo do Azure Resource Manager (modelo ARM):

Gorjeta

Recomendamos o Bicep porque ele oferece os mesmos recursos que os modelos ARM e a sintaxe é mais fácil de usar. Para saber mais, consulte o operador lógico coalesce e operadores de comparação.

coalesce

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

Retorna o primeiro valor não nulo dos parâmetros. Cadeias de caracteres vazias, matrizes vazias e objetos vazios não são nulos.

No Bicep, use o ?? operador em vez disso. Veja Coalesce ??.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int, string, array ou objeto O primeiro valor a ser testado para null.
mais args Não int, string, array ou objeto Mais valores para testar para nulo.

Valor devolvido

O valor dos primeiros parâmetros não nulos, que podem ser uma cadeia de caracteres, int, matriz ou objeto. Nulo se todos os parâmetros forem nulos.

Exemplo

O modelo de exemplo a seguir mostra a saída de 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))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
stringOutput String default
intOutput Int 1
objectOutput Object {"first": "default"}
arrayOutput Matriz [1]
emptyOutput Bool True

equals

equals(arg1, arg2)

Verifica se dois valores são idênticos. A comparação diferencia maiúsculas de minúsculas.

No Bicep, use o == operador em vez disso. Ver Equals ==.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int, string, array ou objeto O primeiro valor a verificar a igualdade.
Arg2 Sim int, string, array ou objeto O segundo valor para verificar a igualdade.

Valor devolvido

Retorna True se os valores forem iguais, caso contrário, False.

Observações

A função equals é frequentemente usada com o condition elemento para testar se um recurso é implantado.

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

Exemplo

O exemplo a seguir verifica diferentes tipos de valores para igualdade. Todos os valores padrão retornam 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'))]"
    }
  }
}

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor Nota
checkInts Bool True
checkStrings Bool False O resultado é false porque a comparação diferencia maiúsculas de minúsculas.
checkArrays Bool True
checkObjects Bool True

O modelo de exemplo a seguir usa não com iguais.

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

A saída do exemplo anterior é:

Nome Tipo valor
checkNotEquals Bool True

greater

greater(arg1, arg2)

Verifica se o primeiro valor é maior que o segundo.

No Bicep, use o > operador em vez disso. Ver Maior que >.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int ou string O primeiro valor para a maior comparação.
Arg2 Sim int ou string O segundo valor para a maior comparação.

Valor devolvido

Retorna True se o primeiro valor for maior que o segundo valor, caso contrário, False.

Exemplo

O exemplo a seguir verifica se um valor é maior que o outro.

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
checkInts Bool False
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

Verifica se o primeiro valor é maior ou igual ao segundo valor.

No Bicep, use o >= operador em vez disso. Consulte Maior que ou igual >=.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int ou string O primeiro valor para a comparação maior ou igual.
Arg2 Sim int ou string O segundo valor para a comparação maior ou igual.

Valor devolvido

Retorna True se o primeiro valor for maior ou igual ao segundo valor, caso contrário, False.

Exemplo

O exemplo a seguir verifica se um valor é maior ou igual ao outro.

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
checkInts Bool False
checkStrings Bool True

less

less(arg1, arg2)

Verifica se o primeiro valor é menor que o segundo.

No Bicep, use o < operador em vez disso. Ver Menos de <.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int ou string O primeiro valor para a menor comparação.
Arg2 Sim int ou string O segundo valor para a menor comparação.

Valor devolvido

Retorna True se o primeiro valor for menor que o segundo valor, caso contrário, False.

Exemplo

O exemplo a seguir verifica se um valor é menor que o outro.

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
checkInts Bool True
checkStrings Bool False

lessOrEquals

lessOrEquals(arg1, arg2)

Verifica se o primeiro valor é menor ou igual ao segundo valor.

No Bicep, use o <= operador em vez disso. Ver Menor ou igual <=.

Parâmetros

Parâmetro Necessário Type Description
Arg1 Sim int ou string O primeiro valor para a comparação menor ou igual.
Arg2 Sim int ou string O segundo valor para a comparação menor ou igual.

Valor devolvido

Retorna True se o primeiro valor for menor ou igual ao segundo valor, caso contrário, False.

Exemplo

O exemplo a seguir verifica se um valor é menor ou igual ao outro.

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

A saída do exemplo anterior com os valores padrão é:

Nome Tipo valor
checkInts Bool True
checkStrings Bool False

Próximos passos