Srovnávací funkce pro šablony ARM

Resource Manager nabízí několik funkcí pro porovnání v šabloně Azure Resource Manageru (šablona ARM):

Tip

Doporučujeme Bicep, protože nabízí stejné možnosti jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v operátorech pro sjednocení logických operátorů a relačních operátorů.

splynout

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

Vrátí první hodnotu, která není null z parametrů. Prázdné řetězce, prázdné pole a prázdné objekty nejsou null.

V Bicep místo toho použijte ?? operátor. Viz Coalesce ??.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int, string, array nebo object První hodnota, která se má testovat s hodnotou null.
více args No int, string, array nebo object Další hodnoty k otestování hodnoty null.

Vrácená hodnota

Hodnota prvních parametrů, které nejsou null, což může být řetězec, int, matice nebo objekt. Null, pokud jsou všechny parametry null.

Příklad

Následující příklad šablony ukazuje výstup z různých použití 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))]"
    }
  }
}

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
stringOutput String default
intOutput Int 0
objectOutput Object {"first": "default"}
arrayOutput Pole [1]
emptyOutput Bool True

rovná se

equals(arg1, arg2)

Zkontroluje, jestli jsou dvě hodnoty identické. V porovnání se rozlišují malá a velká písmena.

V Bicep místo toho použijte == operátor. Viz rovná se ==.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int, string, array nebo object První hodnota, která se má zkontrolovat rovnost.
arg2 Ano int, string, array nebo object Druhá hodnota, která zkontroluje rovnost.

Vrácená hodnota

Vrátí hodnotu True , pokud jsou hodnoty stejné. V opačném případě vrátí hodnotu False.

Poznámky

Funkce equals se často používá s prvkem condition k otestování, zda je prostředek nasazen.

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

Příklad

Následující příklad kontroluje různé typy hodnot rovnosti. Všechny výchozí hodnoty vrátí hodnotu 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'))]"
    }
  }
}

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota Poznámka:
checkInts Bool True
checkStrings Bool False Výsledkem je false , že porovnání rozlišují malá a velká písmena.
checkArrays Bool True
checkObjects Bool True

Následující příklad šablony používá nerovná se.

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

Výstup z předchozího příkladu je:

Name Typ Hodnota
checkNotEquals Bool True

greater

greater(arg1, arg2)

Zkontroluje, jestli je první hodnota větší než druhá hodnota.

V Bicep místo toho použijte > operátor. Viz Větší než >.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int nebo string První hodnota pro větší porovnání.
arg2 Ano int nebo string Druhá hodnota pro větší porovnání.

Vrácená hodnota

Vrátí hodnotu True , pokud je první hodnota větší než druhá hodnota; v opačném případě false.

Příklad

Následující příklad zkontroluje, zda je jedna hodnota větší než druhá.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
checkInts Bool False
checkStrings Bool True

greaterOrEquals

greaterOrEquals(arg1, arg2)

Zkontroluje, jestli je první hodnota větší nebo rovna druhé hodnotě.

V Bicep místo toho použijte >= operátor. Viz Větší než nebo rovno >=.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int nebo string První hodnota pro větší nebo stejné porovnání.
arg2 Ano int nebo string Druhá hodnota pro větší nebo stejné porovnání.

Vrácená hodnota

Vrátí hodnotu True , pokud je první hodnota větší nebo rovna druhé hodnotě; jinak False.

Příklad

Následující příklad zkontroluje, zda je jedna hodnota větší nebo rovna druhé.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
checkInts Bool False
checkStrings Bool True

less

less(arg1, arg2)

Zkontroluje, jestli je první hodnota menší než druhá hodnota.

V Bicep místo toho použijte < operátor. Viz Menší než <.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int nebo string První hodnota pro menší porovnání.
arg2 Ano int nebo string Druhá hodnota pro menší porovnání.

Vrácená hodnota

Vrátí hodnotu True , pokud je první hodnota menší než druhá hodnota. V opačném případě vrátí hodnotu False.

Příklad

Následující příklad zkontroluje, zda je jedna hodnota menší než druhá.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
checkInts Bool True
checkStrings Bool False

lessOrEquals

lessOrEquals(arg1, arg2)

Zkontroluje, jestli je první hodnota menší nebo rovna druhé hodnotě.

V Bicep místo toho použijte <= operátor. Viz Menší než nebo rovno <=.

Parametry

Parametr Požaduje se Type Popis
arg1 Ano int nebo string První hodnota pro menší nebo rovnou porovnání.
arg2 Ano int nebo string Druhá hodnota menšího nebo rovnou porovnání.

Vrácená hodnota

Vrátí hodnotu True , pokud je první hodnota menší nebo rovna druhé hodnotě; v opačném případě false.

Příklad

Následující příklad zkontroluje, zda je jedna hodnota menší nebo rovna druhé.

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

Výstup z předchozího příkladu s výchozími hodnotami je:

Name Typ Hodnota
checkInts Bool True
checkStrings Bool False

Další kroky