# BuildGraph Script Conditions

## Learn syntax to write BuildGraph script conditions.

If you want to build logical complexity into your BuildGraph scripts, you'll need to work with conditionals. The following section introduces you to how BuildGraph conditions are written, including a list of conditional operators.

## Conditions

BuildGraph script conditions consist of atoms and operators that evaluate to `true` or `false`.

### Atoms

Atoms can be numbers, strings, or identifiers that are coerced to their appropriate type for the oprator using them. Atoms may be quoted with single (') or double (") quotes. They can also be an unquoted sequence of letters, digits, and underscore characters. All atoms are considered the same type, regardless of how they're declared. Additionally, atoms are considered case-insensitive for comparisons, which means that the strings "True" and 'true' are identical to the identifier `true` (despite the presence of quotes and differences in case).

## Operators

A list of operators is specified below:

Operator

Description

Precedence

`(x)`

Subexpression

1

`!x`

Not operator

1

`Exists(x)`

True if the x file exists.

1

`HasTrailingSlash(x)`

True if x ends with a slash or backslash.

1

`x == y`

Tests two atoms for equality (case insensitive).

2

`x != y`

Tests two atoms for inequality (case insensitive).

2

`x < y`

Compares whether the integer x is less than the integer y.

2

`x <= y`

Compares whether the integer x is less than or equal to the integer y.

2

`x > y`

Compares whether the integer x is greater than the integer y.

2

`x >= y`

Compares whether the integer x is greater than or equal to the integer y.

2

`x and y`

True if both arguments are `true`.

3

`x or y`

True if either argument is `true`.

4

The `'<'` and `'>'` characters must be escaped as `"&lt;"` and `"&gt;"` in XML.

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.