Argument <zmienne> jest to lista nazw zmiennych (najczęściej jest to jedna zmienna), do których mają być wpisane wartości kolejno pobierane z <listy> (jeśli zabraknie do wypełnienia wszystkich, to zmienne, dla których brakuje, są zapisywane pustym napisem). Można też podać kilka serii „<zmienne> <lista>” i wtedy kilka list może być przetwarzane równolegle. Najprostsza postać użycia to:

foreach i [info vars] { puts $i }

które wypisze listę nazw aktualnie widzianych zmiennych.

Do sterowania przepływem wewnątrz pętli służą komendy break i continue.

Wejście i wyjście Najczęściej używaną komendą do wypisywania jest komenda puts:

puts ?-nonewline? ?gdzie? <tekst>

Komenda puts domyślnie dodaje znak końca linii, chyba że użyjemy opcji -nonewline. Opcjonalny argument ?gdzie? jest nazwą kanału otwartego do zapisu (domyślnie jest to stdout).

Kanały w Tcl-u są identyfikatorami miejsc, na rzecz których wykonywane są operacje wejścia/wyjścia. Ich nazwy są tworzone przez komendy, które tworzą takie kanały, ale poza tym istnieją trzy kanały dostępne zawsze, które nazywają się stdin, stdout i stderr i oznaczają tzw. standardowe wejście, standardowe wyjście i standardowe wyjście diagnostyczne.