Compartilhar via


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

O Resource Manager oferece diversas funções para fazer comparações no modelo do ARM (Azure Resource Manager):

Dica

Recomendamos o Bicep porque ele oferece as mesmas funcionalidades que os modelos do ARM e a sintaxe é mais fácil de usar. Para saber mais, confira unir operador lógico e comparação de operadores.

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 ??. Consulte Coalesce ??.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int, string, array ou object O primeiro valor para testar se é nulo.
mais argumentos Não int, string, array ou object Valores adicionais para testar se são nulos.

Valor retornado

O valor dos primeiros parâmetros não nulos, que pode ser uma cadeia de caracteres, inteiro, matriz ou objeto. Null 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 padrão
intOutput int 1
objectOutput Objeto {"first": "default"}
arrayOutput Array [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 ==. Consulte Equals = =.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int, string, array ou object O primeiro valor para verificar a igualdade.
arg2 Sim int, string, array ou object O segundo valor para verificar a igualdade.

Valor retornado

Retorna True se os valores são iguais; caso contrário, False.

Comentários

A função equals é frequentemente usada com o elemento condition para testar se um recurso está 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 modelo de exemplo a seguir verifica os 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 Observação
checkInts Bool True
checkStrings Bool Falso 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 not com 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))]"
    }
  }
}

O resultado do exemplo anterior é:

Nome Tipo Valor
checkNotEquals Bool True

greater

greater(arg1, arg2)

Verifica se o primeiro valor é maior que o segundo valor.

No Bicep, use o operador >. Consulte Maior que >.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int ou string O primeiro valor da comparação de maior que.
arg2 Sim int ou string O segundo valor da comparação de maior que.

Valor retornado

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

Exemplo

O modelo de 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 Falso
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

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

No Bicep, use o operador >=. Consulte Maior que ou igual a >=.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int ou string O primeiro valor da comparação de maior que ou igual a.
arg2 Sim int ou string O segundo valor da comparação de maior que ou igual a.

Valor retornado

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

Exemplo

O modelo de 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 Falso
checkStrings Bool True

less

less(arg1, arg2)

Verifica se o primeiro valor é menor que o segundo valor.

No Bicep, use o operador <. Consulte Menor que <.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int ou string O primeiro valor da comparação de menor que.
arg2 Sim int ou string O segundo valor da comparação de menor que.

Valor retornado

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

Exemplo

O modelo de 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 Falso

lessOrEquals

lessOrEquals(arg1, arg2)

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

No Bicep, use o operador <=. Consulte Menor que ou igual a <=.

Parâmetros

Parâmetro Obrigatório Type Descrição
arg1 Sim int ou string O primeiro valor da comparação de menor que ou igual a.
arg2 Sim int ou string O segundo valor da comparação de menor que ou igual a.

Valor retornado

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

Exemplo

O modelo de 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 Falso

Próximas etapas