<skrypt>

To, co jest tutaj określone jako <skrypt>, jest dowolną postacią komendy lub kilku komend, które mają się wykonać, jeśli zostanie spełniony warunek. Natomiast <warunek> jest wyrażeniem arytmetycznym, które należy podać w postaci identycznej jak dla komendy expr. Powinno się je też brać w nawiasy klamrowe, aby zabezpieczyć się przed (najczęściej niepożądanym) obliczaniem wartości tego wyrażenia podczas przygotowywania argumentów dla komendy (wyrażenie powinno zostać podane bez zmian do komendy i dopiero tam obliczone; to samo zresztą powinno się stosować dla komendy expr):

if { $a > 0 } { set x [expr {$x/$a}] }

W podobny sposób działa pętla while:

while <warunek> <skrypt>

Pętli do-while, jak zostało wspomniane wcześniej, nie ma (oczywiście jest dostępna w niektórych bibliotekach, np. w jednej z grupy tcllib). Oto pętla for:

for <inicjalizacja> <warunek> <następne> <skrypt>

Którą można napisać np. tak:

for {set i 0} {$i < $argc} {incr i} { puts "Arg #$i: [lindex $argv $i]" }

Pętla foreach:

foreach <zmienne> <lista> [<zmienne lista>...] <skrypt>