blob: 8817589cd8819071fe7fc63b87befdcb4efcf28a [file] [log] [blame]
---
page_title: Expressions - Configuration Language
description: >-
An overview of expressions to reference or compute values in Terraform
configurations, including types, operators, and functions.
---
# Expressions
> **Hands-on:** Try the [Create Dynamic Expressions](/terraform/tutorials/configuration-language/expressions?utm_source=WEBSITE&utm_medium=WEB_IO&utm_offer=ARTICLE_PAGE&utm_content=DOCS) tutorial.
_Expressions_ refer to or compute values within a configuration.
The simplest expressions are just literal values, like `"hello"` or `5`,
but the Terraform language also allows more complex expressions such as
references to data exported by resources, arithmetic, conditional evaluation,
and a number of built-in functions.
Expressions can be used in a number of places in the Terraform language,
but some contexts limit which expression constructs are allowed,
such as requiring a literal value of a particular type or forbidding
[references to resource attributes](/terraform/language/expressions/references#references-to-resource-attributes).
Each language feature's documentation describes any restrictions it places on
expressions.
You can experiment with the behavior of Terraform's expressions from
the Terraform expression console, by running
[the `terraform console` command](/terraform/cli/commands/console).
The other pages in this section describe the features of Terraform's
expression syntax.
- [Types and Values](/terraform/language/expressions/types)
documents the data types that Terraform expressions can resolve to, and the
literal syntaxes for values of those types.
- [Strings and Templates](/terraform/language/expressions/strings)
documents the syntaxes for string literals, including interpolation sequences
and template directives.
- [References to Values](/terraform/language/expressions/references)
documents how to refer to named values like variables and resource attributes.
- [Operators](/terraform/language/expressions/operators)
documents the arithmetic, comparison, and logical operators.
- [Function Calls](/terraform/language/expressions/function-calls)
documents the syntax for calling Terraform's built-in functions.
- [Conditional Expressions](/terraform/language/expressions/conditionals)
documents the `<CONDITION> ? <TRUE VAL> : <FALSE VAL>` expression, which
chooses between two values based on a bool condition.
- [For Expressions](/terraform/language/expressions/for)
documents expressions like `[for s in var.list : upper(s)]`, which can
transform a complex type value into another complex type value.
- [Splat Expressions](/terraform/language/expressions/splat)
documents expressions like `var.list[*].id`, which can extract simpler
collections from more complicated expressions.
- [Dynamic Blocks](/terraform/language/expressions/dynamic-blocks)
documents a way to create multiple repeatable nested blocks within a resource
or other construct.
- [Type Constraints](/terraform/language/expressions/type-constraints)
documents the syntax for referring to a type, rather than a value of that
type. Input variables expect this syntax in their `type` argument.
- [Version Constraints](/terraform/language/expressions/version-constraints)
documents the syntax of special strings that define a set of allowed software
versions. Terraform uses version constraints in several places.