ARM 範本的邏輯函式

Resource Manager 提供數個函式,可讓您在 Azure Resource Manager 範本 (ARM 範本) 中進行比較:

提示

我們建議使用 Bicep,因為其提供的功能與 ARM 範本相同,而且語法更易於使用。 若要深入瞭解更多資訊,請參閱 bool 邏輯函數和邏輯運算子。

and(arg1, arg2, ...)

檢查所有參數值是否為 true。

Bicep 不支援 and 函式。 請改用 && 運算子

參數

參數 必要 類型​ 描述
arg1 Yes boolean 要檢查是否為 true 的第一個值。
arg2 Yes boolean 要檢查是否為 true 的第二個值。
更多引數 No boolean 要檢查是否為 true 的更多引數。

傳回值

如果所有值都是 true,則傳回 True,否則會傳回 False

範例

下列範例會示範如何使用邏輯函式。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前述範例的輸出為:

名稱 類型
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

bool

bool(arg1)

將參數轉換為布林值。

針對 Bicep 檔案,使用 bool 邏輯函數。

參數

參數 必要 類型​ 描述
arg1 Yes 字串或整數 要轉換為布林值的值。

傳回值

轉換值的布林值。

備註

您也可以使用 true()false() 取得布林值。

範例

下列範例顯示如何搭配使用 bool 與字串或整數。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueString": {
      "type": "bool",
      "value": "[bool('true')]"
    },
    "falseString": {
      "type": "bool",
      "value": "[bool('false')]"
    },
    "trueInt": {
      "type": "bool",
      "value": "[bool(1)]"
    },
    "falseInt": {
      "type": "bool",
      "value": "[bool(0)]"
    }
  }
}

上述範例中具有預設值的輸出如下:

名稱 類型
trueString Bool True
falseString Bool False
trueInt Bool True
falseInt Bool False

false

false()

傳回 false。

false 函式無法在 Bicep 中使用。 請改為使用 false 關鍵字。

參數

false 函式不接受任何參數。

傳回值

一律為 false 的布林值。

範例

下列範例會傳回 false 的輸出值。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "falseOutput": {
      "type": "bool",
      "value": "[false()]"
    }
  }
}

前述範例的輸出為:

名稱 類型
falseOutput Bool False

if

if(condition, trueValue, falseValue)

根據條件是 true 或 false 傳回值。

Bicep 不支援 if 函式。 請改用?: 運算子

參數

參數 必要 類型​ 描述
條件 Yes boolean 需檢查是否為 true 或 false 的值。
trueValue Yes 字串、int、物件或陣列 條件為 true 時,傳回的值。
falseValue Yes 字串、int、物件或陣列 條件為 false 時,傳回的值。

傳回值

當第一個參數是 True 時,傳回第二個參數;否則會傳回第三個參數。

備註

條件為 True 時,只會評估 true 值。 條件為 False 時,只會評估 false 值。 使用 if 函式時,您可以僅附上條件式有效的運算式。 例如,您可以參照符合某個條件但不符合另一個條件的資源。 下一節顯示條件式評估運算式的範例。

範例

下列範例示範如何使用 if 函式。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "yesOutput": {
      "type": "string",
      "value": "[if(equals('a', 'a'), 'yes', 'no')]"
    },
    "noOutput": {
      "type": "string",
      "value": "[if(equals('a', 'b'), 'yes', 'no')]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[if(equals('a', 'a'), json('{\"test\": \"value1\"}'), json('null'))]"
    }
  }
}

前述範例的輸出為:

名稱 類型
yesOutput String
noOutput String
objectOutput Object { "test": "value1" }

下列範例範本顯示如何將此函式與僅在條件下有效的運算式搭配使用。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "logAnalytics": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
   {
      "condition": "[not(empty(parameters('logAnalytics')))]",
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2022-11-01",
      "name": "[format('{0}/omsOnboarding', parameters('vmName'))]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.EnterpriseCloud.Monitoring",
        "type": "MicrosoftMonitoringAgent",
        "typeHandlerVersion": "1.0",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "workspaceId": "[if(not(empty(parameters('logAnalytics'))), reference(parameters('logAnalytics'), '2015-11-01-preview').customerId, null())]"
        },
        "protectedSettings": {
          "workspaceKey": "[if(not(empty(parameters('logAnalytics'))), listKeys(parameters('logAnalytics'), '2015-11-01-preview').primarySharedKey, null())]"
        }
      }
    }
  ],
  "outputs": {
    "mgmtStatus": {
      "type": "string",
      "value": "[if(not(empty(parameters('logAnalytics'))), 'Enabled monitoring for VM!', 'Nothing to enable')]"
    }
  }
}

not

not(arg1)

將布林值轉換為其相反值。

Bicep 不支援 not 函式。 請改用 ! 運算子

參數

參數 必要 類型​ 描述
arg1 Yes boolean 要進行轉換的 值。

傳回值

當參數是 False 時,傳回 True。 當參數是 True 時,傳回 False

範例

下列範例會示範如何使用邏輯函式。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前述範例的輸出為:

名稱 類型
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

下列範例使用 not 搭配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))]"
    }
  }
}

前述範例的輸出為:

名稱 類型
checkNotEquals Bool True

or(arg1, arg2, ...)

檢查任何參數值是否為 true。

Bicep 不支援 or 函式。 請改用 || 運算子

參數

參數 必要 類型​ 描述
arg1 Yes boolean 要檢查是否為 true 的第一個值。
arg2 Yes boolean 要檢查是否為 true 的第二個值。
更多引數 No boolean 要檢查是否為 true 的更多引數。

傳回值

如果任何值為 true,傳回 True,否則會傳回 False

範例

下列範例會示範如何使用邏輯函式。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "andExampleOutput": {
      "type": "bool",
      "value": "[and(bool('true'), bool('false'))]"
    },
    "orExampleOutput": {
      "type": "bool",
      "value": "[or(bool('true'), bool('false'))]"
    },
    "notExampleOutput": {
      "type": "bool",
      "value": "[not(bool('true'))]"
    }
  }
}

前述範例的輸出為:

名稱 類型
andExampleOutput Bool False
orExampleOutput Bool True
notExampleOutput Bool False

true

true()

傳回 true。

true 函式無法在 Bicep 中使用。 請改為使用 true 關鍵字。

參數

True 函式不接受任何參數。

傳回值

一律為 true 的布林值。

範例

下列範例會傳回 true 的輸出值。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "trueOutput": {
      "type": "bool",
      "value": "[true()]"
    }
  }
}

前述範例的輸出為:

名稱 類型
trueOutput Bool True

下一步