set(n) Tcl Built-In Commands set(n)

```

```

# [NAME](#NAME)

set - Read and write variables

# [SYNOPSIS](#SYNOPSIS)

**set varName** ?*value*?

```

```

# [DESCRIPTION](#DESCRIPTION)

Returns the value of variable *varName*. If *value* is specified, then set the value of *varName* to *value*, creating a new variable if one does not already exist, and return its value. If *varName* contains an open parenthesis and ends with a close parenthesis, then it refers to an array element: the characters before the first open parenthesis are the name of the array, and the characters between the parentheses are the index within the array. Otherwise *varName* refers to a scalar variable.

If *varName* includes namespace qualifiers (in the array name if it refers to an array element), or if *varName* is unqualified (does not include the names of any containing namespaces) but no procedure is active, *varName* refers to a namespace variable resolved according to the rules described under **NAME RESOLUTION** in the **namespace** manual page.

If a procedure is active and *varName* is unqualified, then *varName* refers to a parameter or local variable of the procedure, unless *varName* was declared to resolve differently through one of the **global**, **variable** or **upvar** commands.

# [EXAMPLES](#EXAMPLES)

Store a random number in the variable *r*:

```
set r [expr {rand()}]
```

Store a short message in an array element:

```
set anAry(msg) "Hello, World!"
```

Store a short message in an array element specified by a variable:

```
set elemName "msg"
set anAry($elemName) "Hello, World!"
```

Copy a value into the variable *out* from a variable whose name is stored in the *vbl* (note that it is often easier to use arrays in practice instead of doing double-dereferencing):

```
set in0 "small random"
set in1 "large random"
set vbl in[expr {rand() >= 0.5}]
set out [set $vbl]
```

# [SEE ALSO](#SEE_ALSO)

[expr(n)](/man/os/tcl/expr.n), [global(n)](/man/os/tcl/global.n), [namespace(n)](/man/os/tcl/namespace.n), [proc(n)](/man/os/tcl/proc.n), [trace(n)](/man/os/tcl/trace.n), [unset(n)](/man/os/tcl/unset.n), [upvar(n)](/man/os/tcl/upvar.n), [variable(n)](/man/os/tcl/variable.n)

# [KEYWORDS](#KEYWORDS)

read, write, variable

Tcl

---

Document: set(n) from tcl 9.1.0-r0 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
