Proposed Pull Request Change

title description ms.topic ms.custom ms.date
Bicep logical operators Describes Bicep logical operators that evaluate conditions. reference devx-track-bicep 10/30/2025
📄 Document Links
GitHub View on GitHub Microsoft Learn View on Microsoft Learn
Content Truncation Detected
The generated rewrite appears to be incomplete.
Original lines: -
Output lines: -
Ratio: -
Raw New Markdown
Generating updated version of doc...
Rendered New Markdown
Generating updated version of doc...
+0 -0
+0 -0
--- title: Bicep logical operators description: Describes Bicep logical operators that evaluate conditions. ms.topic: reference ms.custom: devx-track-bicep ms.date: 10/30/2025 --- # Bicep logical operators The logical operators evaluate boolean values, return non-null values, or evaluate a conditional expression. To run the examples, use Azure CLI or Azure PowerShell to [deploy a Bicep file](./quickstart-create-bicep-use-visual-studio-code.md#deploy-the-bicep-file). | Operator | Name | | ---- | ---- | | `&&` | [And](#and-) | | `||` | [Or](#or-) | | `!` | [Not](#not-) | | `??` | [Coalesce](#coalesce-) | | `?` `:` | [Conditional expression](#conditional-expression--) | ## And && `operand1 && operand2` Determines if both values are true. ### Operands | Operand | Type | Description | | ---- | ---- | ---- | | `operand1` | boolean | The first value to check if true. | | `operand2` | boolean | The second value to check if true. | | More operands | boolean | More operands can be included. | ### Return value `True` when both values are true, otherwise `false` is returned. ### Example Evaluates a set of parameter values and a set of expressions. ```bicep param operand1 bool = true param operand2 bool = true output andResultParm bool = operand1 && operand2 output andResultExp bool = 10 >= 10 && 5 > 2 ``` Output from the example: | Name | Type | Value | | ---- | ---- | ---- | | `andResultParm` | boolean | true | | `andResultExp` | boolean | true | To avoid *The language expression property 'foo' doesn't exist* exception with [Bicep objects](./data-types.md#objects), you can use the And logical operator as shown in the following example: ```bicep param objectToTest object = { one: 1 two: 2 three: 3 } output bar bool = contains(objectToTest, 'four') && objectToTest.four == 4 ``` ## Or || `operand1 || operand2` Determines if either value is true. ### Operands | Operand | Type | Description | | ---- | ---- | ---- | | `operand1` | boolean | The first value to check if true. | | `operand2` | boolean | The second value to check if true. | | More operands | boolean | More operands can be included. | ### Return value `True` when either value is true, otherwise `false` is returned. ### Example Evaluates a set of parameter values and a set of expressions. ```bicep param operand1 bool = true param operand2 bool = false output orResultParm bool = operand1 || operand2 output orResultExp bool = 10 >= 10 || 5 < 2 ``` Output from the example: | Name | Type | Value | | ---- | ---- | ---- | | `orResultParm` | boolean | true | | `orResultExp` | boolean | true | To avoid *The language expression property array index 'x' is out of bounds* exception, you can use the Or logical operator as shown in the following example: ```bicep param emptyArray array = [] param numberArray array = [1, 2, 3] output foo bool = empty(emptyArray) || emptyArray[0] == 'bar' output bar bool = length(numberArray) >= 3 || numberArray[3] == 4 ``` ## Not ! `!boolValue` Negates a boolean value. ### Operand | Operand | Type | Description | | ---- | ---- | ---- | | `boolValue` | boolean | Boolean value that's negated. | ### Return value Negates the initial value and returns a boolean. If the initial value is `true`, then `false` is returned. ### Example The `not` operator negates a value. The values can be wrapped with parentheses. ```bicep param initTrue bool = true param initFalse bool = false output startedTrue bool = !(initTrue) output startedFalse bool = !initFalse ``` Output from the example: | Name | Type | Value | | ---- | ---- | ---- | | `startedTrue` | boolean | false | | `startedFalse` | boolean | true | ## Coalesce ?? `operand1 ?? operand2` Returns first non-null value from operands. To control the execution flow, see the [fail function](./bicep-functions-flow-control.md#fail). ### Operands | Operand | Type | Description | | ---- | ---- | ---- | | `operand1` | string, integer, boolean, object, array | Value to test for `null`. | | `operand2` | string, integer, boolean, object, array | Value to test for `null`. | | More operands | string, integer, boolean, object, array | Value to test for `null`. | ### Return value Returns the first non-null value. Empty strings, empty arrays, and empty objects aren't `null` and an \<empty> value is returned. ### Example The output statements return the non-null values. The output type must match the type in the comparison or an error is generated. ```bicep param myObject object = { isnull1: null isnull2: null string: 'demoString' emptystr: '' integer: 10 } output nonNullStr string = myObject.isnull1 ?? myObject.string ?? myObject.isnull2 output nonNullInt int = myObject.isnull1 ?? myObject.integer ?? myObject.isnull2 output nonNullEmpty string = myObject.isnull1 ?? myObject.emptystr ?? myObject.string ?? myObject.isnull2 ``` Output from the example: | Name | Type | Value | | ---- | ---- | ---- | | `nonNullStr` | string | demoString | | `nonNullInt` | int | 10 | | `nonNullEmpty` | string | \<empty> | ## Conditional expression ? : `condition ? true-value : false-value` Evaluates a condition and returns a value whether the condition is true or false. To control the execution flow, see the [fail function](./bicep-functions-flow-control.md#fail). ### Operands | Operand | Type | Description | | ---- | ---- | ---- | | `condition` | boolean | Condition to evaluate as true or false. | | `true-value` | string, integer, boolean, object, array | Value when condition is true. | | `false-value` | string, integer, boolean, object, array | Value when condition is false. | ### Example This example evaluates a parameter's initial and returns a value whether the condition is true or false. ```bicep param initValue bool = true output outValue string = initValue ? 'true value' : 'false value' ``` Output from the example: | Name | Type | Value | | ---- | ---- | ---- | | `outValue` | string | true value | ## Next steps - To create a Bicep file, see [Quickstart: Create Bicep files with Visual Studio Code](./quickstart-create-bicep-use-visual-studio-code.md). - For information about how to resolve Bicep type errors, see [Any function for Bicep](./bicep-functions-any.md). - To compare syntax for Bicep and JSON, see [Comparing JSON and Bicep for templates](./compare-template-syntax.md). - For examples of Bicep functions, see [Bicep functions](./bicep-functions.md).
Success! Branch created successfully. Create Pull Request on GitHub
Error: