---
name: "if"
section: "n"
platform: "macos"
package: "tcl"
version: "152"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/if/n"
---

# if(n)

Execute scripts conditionally

## NAME

if - Execute scripts conditionally

## SYNOPSIS

**if** *expr1* ?**then**? *body1* **elseif** *expr2* ?**then**? *body2* **elseif** ... ?**else**? ?*bodyN*?

## DESCRIPTION

The *if* command evaluates *expr1* as an expression (in the same way that **expr** evaluates its argument).  The value of the expression must be a boolean (a numeric value, where 0 is false and anything is true, or a string value such as **true** or **yes** for true and **false** or **no** for false); if it is true then *body1* is executed by passing it to the Tcl interpreter. Otherwise *expr2* is evaluated as an expression and if it is true then **body2** is executed, and so on. If none of the expressions evaluates to true then *bodyN* is executed. The **then** and **else** arguments are optional to make the command easier to read. There may be any number of **elseif** clauses, including zero. *BodyN* may also be omitted as long as **else** is omitted too. The return value from the command is the result of the body script that was executed, or an empty string if none of the expressions was non-zero and there was no *bodyN*.

## EXAMPLES

A simple conditional: **if** {$vbl == 1} { puts "vbl is one" }

With an **else**-clause: **if** {$vbl == 1} {\
    puts "vbl is one" } **else** {\
    puts "vbl is not one" }

With an **elseif**-clause too: **if** {$vbl == 1} {\
    puts "vbl is one" } **elseif** {$vbl == 2} {\
    puts "vbl is two" } **else** {\
    puts "vbl is not one or two" }

Remember, expressions can be multi-line, but in that case it can be a good idea to use the optional **then** keyword for clarity: **if** {\
    $vbl == 1 \|\| $vbl == 2 \|\| $vbl == 3 } **then** {\
    puts "vbl is one, two or three" }

## SEE ALSO

[expr(n)](/expr/n.md), [for(n)](/for/n.md), [foreach(n)](/foreach/n.md)

## KEYWORDS

boolean, conditional, else, false, if, true
