---
name: "lassign"
section: "n"
platform: "linux"
package: "tcl"
version: "8.6.16-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/lassign/n"
---

# lassign(n)

Assign list elements to variables

```

```

## NAME

lassign - Assign list elements to variables

## SYNOPSIS

**lassign** *list* ?*varName ...*?

```

```

## DESCRIPTION

This command treats the value *list* as a list and assigns successive elements from that list to the variables given by the *varName* arguments in order.  If there are more variable names than list elements, the remaining variables are set to the empty string.  If there are more list elements than variables, a list of unassigned elements is returned.

## EXAMPLES

An illustration of how multiple assignment works, and what happens when there are either too few or too many elements.

```
lassign {a b c} x y z       ;# Empty return
puts $x                     ;# Prints "a"
puts $y                     ;# Prints "b"
puts $z                     ;# Prints "c"
lassign {d e} x y z         ;# Empty return
puts $x                     ;# Prints "d"
puts $y                     ;# Prints "e"
puts $z                     ;# Prints ""
lassign {f g h i} x y       ;# Returns "h i"
puts $x                     ;# Prints "f"
puts $y                     ;# Prints "g"
```

The **lassign** command has other uses.  It can be used to create the analogue of the “shift” command in many shell languages like this:

```
set ::argv [lassign $::argv argumentToReadOff]
```

## SEE ALSO

[lindex(n)](/lindex/n.md), [list(n)](/list/n.md), [lrange(n)](/lrange/n.md), [lset(n)](/lset/n.md), [set(n)](/set/n.md)

## KEYWORDS

assign, element, list, multiple, set, variable
