دالات المقارنة لقوالب ARM

يوفر مدير الموارد العديد من الوظائف لإجراء مقارنات في قالب مدير موارد Azure:

تلميح

نوصي باستخدام Bicep لأنها تقدم نفس الإمكانات التي توفرها نماذج ARM ولأن البنية أسهل في الاستخدام. لمعرفة المزيد، راجع عوامل التشغيل المنطقية coalesce وcomparison.

coalesce

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

يسفر عن القيمة غير الخالية الأولى من المعلمات. سلاسل فارغة، صفائف فارغة وكائنات فارغة ليست خالية.

في Bicep، استخدم ?? operator بدلاً من ذلك. انظر الدمج؟؟.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int، سلسلة، صفيف، أو كائن القيمة الأولى لاختبار null.
المزيد من args لا int، سلسلة، صفيف، أو كائن المزيد من القيم لاختبارها لـ null.

قيمة الإرجاع

قيمة المعلمات غير الخالية الأولى، والتي يمكن أن تُكوِّن سلسلة أو int أو صفيف أو كائن. Null إذا كانت جميع المعلمات خالية.

مثال

يوضح قالب المثال التالي المخرجات الناتجة عن استخدامات مختلفة من الدمج.

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

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
إخراج السلسلة السلسلة‬ افتراضي
إخراج العدد الصحيح Int 1
objectOutput ‏‏الكائن {"first": "default"}
arrayOutput صفيف [1]
emptyOutput مجموعة صواب

متساوٍ

equals(arg1, arg2)

يتحقق مما إذا كانت قيمتان تساويان بعضهما.

في Bicep، استخدم == operator بدلاً من ذلك. راجع يساوي ==.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int، سلسلة، صفيف، أو كائن القيمة الأولى للتحقق من المساواة.
arg2 ‏‏نعم‬ int، سلسلة، صفيف، أو كائن القيمة الثانية للتحقق من المساواة.

قيمة الإرجاع

تسفر عنTrue إذا كانت القيم متساوية؛ بخلاف ذلك، تكون False.

الملاحظات

غالبا ما تستخدم دالة التساوي مع condition العنصر للتحقق من نشر المورد من عدمه.

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

مثال

يتحقق المثال التالي من أنواع مختلفة من القيم للمساواة. جميع القيم الافتراضية تسفر عن النتيجة "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'))]"
    }
  }
}

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
checkInts مجموعة صواب
checkStrings مجموعة صواب
checkArrays مجموعة صواب
checkObjects مجموعة صواب

يستخدم قالب المثال التالي not مع المتساويات.

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

المخرجات من المثال السابق هي:

Name نوع القيمة‬
checkNotEquals مجموعة صواب

أكبر

greater(arg1, arg2)

يتحقق مما إذا كانت القيمة الأولى أكبر من القيمة الثانية.

في Bicep، استخدم > operator بدلاً من ذلك. انظر أكبر من >.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int أو سلسلة القيمة الأولى للمقارنة الأكبر.
arg2 ‏‏نعم‬ int أو سلسلة القيمة الثانية للمقارنة الأكبر.

قيمة الإرجاع

تسفر عن True إذا كانت القيمة الأولى أكبر من القيمة الثانية؛ بخلاف ذلك، تكون False.

مثال

يتحقق المثال التالي مما إذا كانت إحدى القيم أكبر من الأخرى.

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

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
checkInts مجموعة خطأ
checkStrings مجموعة صواب

greaterOrEquals

greaterOrEquals(arg1, arg2)

يتحقق مما إذا كانت القيمة الأولى أكبر من أو مساوية للقيمة الثانية.

في Bicep، استخدم >= operator بدلاً من ذلك. راجع أكبر من أو يساوي >=.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int أو سلسلة القيمة الأولى للمقارنة الأكبر أو المتساوية.
arg2 ‏‏نعم‬ int أو سلسلة القيمة الثانية للمقارنة الأكبر أو المتساوية.

قيمة الإرجاع

تسفر عن True إذا كانت القيمة الأولى أكبر من القيمة الثانية؛ بخلاف ذلك، تكون False.

مثال

يتحقق المثال التالي مما إذا كانت إحدى القيم أكبر من الأخرى أو تساويها.

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

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
checkInts مجموعة خطأ
checkStrings مجموعة صواب

أقل

less(arg1, arg2)

يتحقق مما إذا كانت القيمة الأولى أقل من القيمة الثانية.

في Bicep، استخدم < operator بدلاً من ذلك. انظر أقل من <.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int أو سلسلة القيمة الأولى للمقارنة الأقل.
arg2 ‏‏نعم‬ int أو سلسلة القيمة الثانية للمقارنة الأقل.

قيمة الإرجاع

تسفر عن True إذا كانت القيمة الأولى أقل من القيمة الثانية؛ بخلاف ذلك، تكون False.

مثال

يتحقق المثال التالي مما إذا كانت إحدى القيم أقل من الأخرى.

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

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
checkInts مجموعة صواب
checkStrings مجموعة خطأ

lessOrEquals

lessOrEquals(arg1, arg2)

يتحقق مما إذا كانت القيمة الأولى أقل من أو مساوية للقيمة الثانية.

في Bicep، استخدم <= operator بدلاً من ذلك. انظر أقل من أو يساوي <=.

المعلمات

المعلمة‬ المطلوب نوع ‏‏الوصف
arg1 ‏‏نعم‬ int أو سلسلة القيمة الأولى للمقارنة الأقل أو المتساوية.
arg2 ‏‏نعم‬ int أو سلسلة القيمة الثانية للمقارنة الأقل أو المتساوية.

قيمة الإرجاع

تسفر عن True إذا كانت القيمة الأولى أقل من القيمة الثانية؛ بخلاف ذلك، تكون False.

مثال

يتحقق المثال التالي مما إذا كانت إحدى القيم أقل من الأخرى أو تساويها.

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

الناتج من المثال السابق مع القيم الافتراضية هو:

Name نوع القيمة‬
checkInts مجموعة صواب
checkStrings مجموعة خطأ

الخطوات التالية