<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>