A parancs végrehajtása befejeződhet
normálisan vagy kivétellel. A
normálisan befejeződő parancs egy stringet ad vissza. Egy Tcl script
visszatérési értéke utolsó parancsának eredménye vagy return
parancsban megadott
érték.
A változók Tcl-ben parancsokon és helyettesítéseken keresztül érhetők el. Kétféle változó áll rendelkezésünkre. Az egyszerű változók egyetlen string értéket tárolnak. A tömbváltozók korlátlan számú stringet tudnak tárolni, az egyes elemekre tetszőleges string indexekkel hivatkozunk. A Tcl tömböt többdimenziós tömbként is használhatjuk, hiszen vesszőkkel elválasztott számok sorozata is megengedett indexként.
A Tcl az imperatív programozási nyelvekben megszokott vezérlőszerkezeteket parancsok formájában biztosítja. A vezérlőszerkezet-parancsok argumentumai a vezérlést meghatározó kifejezések és a különböző esetekben végrehajtandó Tcl scriptek. Általában mind előbbieket, mind utóbbiakat kapcsos zárójelek közé zárva adjuk meg, hogy egyetlen argumentumnak számítsanak és több sorba is írhassuk őket:
if {$kor < 3} then { set hely "bölcsi" set etel "papi" } elseif {$kor < 6} then { set hely "ovi" set etel "kukoricapehely" } else { set hely "egyeb" set etel "nem válogat" }
A parancsok szavainak helyettesítése az alábbi egységes szabályok szerint történik, függetlenül a konkrét parancstól:
$név |
Név egy egyszerű változó neve. A nevet az első olyan karakter zárja le, amely nem alfanumerikus vagy aláhúzás. |
$név(index) |
Név egy tömbváltozó neve és index a tömb egy elemének a neve. Név csak alfanumerikus és aláhúzáskaraktereket tartalmazhat. Az index karakterein történik parancs-, változó- és backslash-helyettesítés. |
${név} |
Név egy egyszerű változó neve. Tetszőleges karaktereket tartalmazhat a záró kapcsos zárójel kivételével. |
Egy szón belül tetszőleges számú változó-helyettesítés szerepelhet. Kapcsos zárójelek közé zárt szavakon nem megy végbe változó-helyettesítés.
\a | hangos karakter (ASCII 0x07) |
\b | backspace karakter (ASCII 0x08) |
\f | lapdobás karakter (ASCII 0x0c) |
\n | újsor karakter (ASCII 0x0a) |
\r | kocsivissza karakter (ASCII 0x0d) |
\t | tabulátor karakter (ASCII 0x09) |
\v | függőleges tabulátor (ASCII 0x0b) |
\újsor | A backslash-t, az újsort, és az azt közvetlenül követő összes fehér karaktert egyetlen szóköz helyettesíti. Ez a szekvencia egyedi, mert helyettesítése egy külön menetben történik, még a parancs szavakra bontása előtt. Ez azt jelenti, hogy még akkor is helyettesítődik, ha kapcsos zárójelek között szerepel. |
\\ | backslash |
\ooo | Az ooo (egy-, két- vagy háromjegyű) oktális számmal megadott ASCII-kódú karakter. |
\xhh | A hh (teszőleges számú számjegyből álló) hexadecimális számmal megadott ASCII-kódú karakter. |
A backslash-újsor kivételével nem történik backslash-helyettesítés kapcsos zárójelbe zárt szavakon.
A helyettesítések nincsenek befolyással a parancsok szavakra tagolására, mert a tagolás megelőzi a helyettesítéseket. Például hiába tartalmaz egy változó értéke szóközöket, behelyettesítve egy szóba a szó nem törik ketté.
A változókat (az eljárások formális paramétereitől eltekintve) nem kell (és nem is lehet) deklarálni. Egy változó akkor jön létre, amikor először hajtunk rá végre értékadást. A tömbváltozó esetében ez az első elemre vonatkozó értékadást jelenti. A tömb pontosan azokkal az elemekkel rendelkezik, amelyekre már történt értékadás.
Az adott néven elérhető változó fajtáját az első értékadás dönti el. Ha abban a változót tömbként használtuk, tömbváltozó, különben egyszerű változó jön létre. Ahhoz, hogy a változó fajtáját megváltoztassuk, először törölnünk kell a változót.
set változónév ?érték?A
set
parancs valósítja meg az értékadást. Ha
változónév tartalmaz nyitó zárójelet, és záró zárójelre
végződik, akkor egy tömb elemére hivatkozik, különben egy egyszerű
változóra. A set
létrehozza a megnevezett változót, ha
még nem létezik, majd értékül adja neki a megadott
értéket. Visszatérési értéke azonos a változó új értékével.
Ha a set
parancsot egyetlen argumentummal hívjuk meg, nem
hajt végre értékadást, csak visszaadja a változó értékét. Általában
ezt változóhelyettesítéssel is megoldhatjuk. De ha
változóhelyettesítést alkalmazunk, a változónévnek konstansként kell a
programszövegben szerepelnie. A set
parancsban megadott
változónév viszont származhat parancs- vagy változó-helyettesítésből,
ezzel tudunk például mutatókat szimulálni. Ha nem létező változó értékét
kérdezzük le, akkor a set
parancs, vagy a változóhelyettesítést
tartalmazó parancs hibával tér vissza.
Megjegyzendő, hogy a Tcl-ben nemcsak globális változók vannak, hanem eljárásokhoz kapcsolódó lokális változók is. Arról, hogy a változóhivatkozások melyik környezetben milyen változókra vonatkoznak, lásd az eljárásokat ismertető részt.
A változó egészen addig megmarad, amíg explicit
utasítással nem töröljük (kivéve a lokális változókat, melyek az
eljárásból való kilépéskor automatikusan törlődnek). A törlést az
unset
parancs végzi.
unset változónév ?változónév ...?Az
unset
parancsnak egyszerre több törlendő változó nevét
is megadhatjuk. A tömbökből egyenként törölhetünk elemeket indexelt
változónév megadásával, de egy tömböt egyben is törölhetünk, ha
indexek nélkül tüntetjük fel a tömb nevét. Az unset
parancs üres stringet ad vissza.
Ha nem létező változó törlését kíséreljük meg, az unset
parancs hibával tér vissza, és az argumentumlistában a nem létezőt
követő változókat nem törli.
Gyakran fordul elő, hogy egy programlépés valamely változó értékének megváltoztatására terjed ki, például egy számláló növelésére, vagy egy string megtoldására. Egy ilyen lépés végrehajtható a változó kiolvasásával, a megfelelő művelet elvégzésével és egy értékadással. Ha erre külön eszközt biztosít a nyelv, akkor hatékonyabb, olvashatóbb és tömörebb programot írhatunk.
incr változónév ?növekmény?Az
incr
utasítás a megadott változó értékét megnöveli a
növekménnyel, alapértelmezésben eggyel. A változó értékének és a
növekménynek is előjeles egész számnak kell lennie. A visszatérési
érték a változó új tartalma lesz.
append változónév ?érték ...?Az
append
parancs a megadott értékeket rendre a
változóhoz fűzi. Ha a változó még nem létezik, létrejön, és értéke az
érték argumentumok konkatenáltja (érték
argumentumok híján az üres string) lesz. Ez a parancs hatékonyan
oldja meg hosszú stringek fokozatos felépítését.
tcl8.0 | A Tcl 8.0-ban bevezették a namespace-eket, melyek
faszerűen egymásba ágyazhatóak.
|
if feltétel1 ?then? törzs1 ?elseif feltétel2 ?then? törzs2 ...? ??else? törzsN?Az
if
parancs feltétel argumentumai logikai
értéket eredményül adó kifejezések (a logikai érték egy szám, ahol a 0
felel meg a hamisnak, de lehet true
, yes
,
false
vagy no
is), a törzsek Tcl
scriptek. A parancs sorra értékeli ki a feltételeket, és az első
teljesülő feltételhez tartozó törzset hajtja végre. Ha egyik feltétel
sem teljesül, és van else
-ág, végrehajtja annak törzsét.
Az if
parancs visszatérési értéke az üres string lesz, ha
egyik feltétel sem teljesült és nincsen else
-ág,
egyébként a végrehajtott törzs visszatérési értéke (azaz a törzs
utolsó utasításának visszatérési értéke) lesz a visszatérési
érték.
A then
és else
argumentumokat nem kötelező
megadni, de növelik az olvashatóságot. Tetszőleges számú
elseif
-ágat adhatunk meg, beleértve, hogy egyet sem.
switch ?kapcsolók? string minta törzs ?minta törzs ...? switch ?kapcsolók? {string minta törzs ?minta törzs ...?}A
switch
parancs string és minta
argumentumai stringek, törzs argumentumai Tcl scriptek. A
parancs stringet rendre a mintákra illeszti, és az első
illeszkedő mintához tartozó törzset hajtja végre. A végrehajtott törzs
visszatérési értékét adja vissza. Ha az utolsó minta
default
, akkor az minden stringre illeszkedik. Ha
string nem illeszkedik egyik mintára sem, a
switch
parancs üres stringgel tér vissza.
A parancsnevet közvetlenül követő, kötőjellel ('-') kezdődő
argumentumok a switch
parancs működését szabályozó
kapcsolók. A következőket használhatjuk:
-exact
-glob
string match
parancsban megengedett minta, és az illesztés ennek értelmében
történik.
-regexp
regexp
parancsnak megfelelő.
--
switch
parancs használatakor választhatunk, hogy a
mintákat és a törzseket külön-külön argumentumként, vagy egyetlen
argumentumként, egy listában adjuk meg. Előbbit akkor célszerű
alkalmazni, ha helyettesítésekre van szükség a minták vagy törzsek
némelyikén. Utóbbinak előnye, hogy egyszerűen több sorba írható.
while feltétel törzsA
wile
parancs feltétel argumentuma logikai
értéket adó kifejezés, törzs Tcl script. A parancs addig
ismétli feltétel kiértékelését és törzs
végrehajtását, amíg feltétel hamis értéket nem ad. Ekkor a ciklus
végrehajtása befejeződik (törzs már nem hajtódik végre). A
while
parancs üres stringet ad vissza.
for inicializáció feltétel léptetés törzsA
for
parancs feltétel argumentuma logikai
értéket adó kifejezés, a többi Tcl script. A parancs kezdetben
végrehajtja az inicializációt. Ezt követően addig ismétli
rendre feltétel kiértékelését, törzs
végrehajtását és léptetés végrehajtását, amíg
feltétel hamis értéket nem ad. Ekkor a parancs
végrehajtása befejeződik (törzs már nem hajtódik végre). A
visszatérési érték üres string.
foreach változónév lista törzsA
foreach
parancs argumentumai rendre egy változó neve,
egy lista és egy Tcl script. A parancs a lista elemeit sorrend
szerint értékül adja a megadott változónak és végrehajtja
törzset. A visszatérési érték üres string.
breakA
break
parancs ciklusok törzsén belül adható ki. Hatására
a ciklus végrehajtása azonnal befejeződik.
A break
parancs valójában TCL_BREAK
kivétellel tér vissza, amelyet normális esetben a ciklust megvalósító
parancs kezel le. A kivételt azonban elfoghatja más is, például egy
catch
parancs vagy egy
eljárás törzsének vége.
continueA
continue
parancs szintén ciklusok törzsén belül adható
ki. A ciklusmag hátralevő részét átugorja (a végrehajtás
while
ciklusoknál a feltétel kiértékelésével,
for
ciklusoknál a léptetés végrehajtásával,
foreach
ciklusoknál a következő listaelemre állással
folytatódik).
A continue
parancs működése is kivételeken alapul,
TCL_CONTINUE
kivételt vált ki.
eval arg ?arg ...?Az
eval
parancs argumentumait a concat
parancsnak
megfelelően konkatenálja, mint Tcl scriptet végrehajtja, és az
eredményt (vagy kivételt) visszaadja.
uplevel ?szint? arg ?arg ...?A megadott szinten hajtja végre a parancsot, amit az argumentumok konkatenációjából kap, és visszaadja az eredményt vagy a kivételt. Olyan, mintha az adott szinten eval arg-ot hajtottunk volna végre. Az alapértelmezett szint 1 (az eljárást hívó szintje). A szintek jelentését és leírását lásd az upvar parancsnál.
tcl8.0 |
namespace eval namespace_neve arg ?arg ...?A megadott namespace-ben értékeli ki. Hasonló az eval -hoz.
|
source fájlnévA
source
parancs a megadott fájl tartalmát, mint Tcl
scriptet végrehajtja, és az eredményt (vagy kivételt) visszaadja. A
hullámmal ('~') kezdődő fájlneveket ugyanúgy kezeli, mint az open
parancs.
A Tcl lehetőséget biztosít arra, hogy figyeltessük,
ha egy változót olvasnak, írnak és/vagy törölnek. A figyelő eljárás,
amelyet a programozó ad meg, mindannyiszor meghívódik, ahányszor a
kiválasztott hozzáférést a változóra végrehajtják. A figyeléssel
kapcsolatos utasításokat a trace
parancs valósítja meg.
trace művelet ?arg ...?Ezen belül a figyelő eljárást a
trace
variable
paranccsal rendeljük hozzá a változóhoz.
trace variable változónév művelet parancsA változó lehet egyszerű változó, tömbváltozó vagy tömbelem. Ha tömböt adunk meg, a tömb összes elemére fog kiterjedni a figyelés.
A figyelendő hozzáférések halmazát a művelet stringgel adjuk meg. A string egyes karakterei egy-egy műveletet jelölnek:
r | olvasás figyelése |
w | írás figyelése |
u | törlés figyelése |
A trace
variable
parancs üres stringet ad
vissza.
A figyelt hozzáférés végrehajtása után parancs három argumentummal kiegészítve hívódik meg (tipikus esetben a parancs egy háromargumentumú eljárás neve):
parancs változónév index műveletHa a hozzáférésben érintett változó egyszerű változó vagy tömbváltozó, változónév a változó neve, index üres string; ha tömbelem, változónév a tömb neve, index a tömbindex. A két név azt a változónevet adja meg, amelyen keresztül a változóra a hivatkozás megtörtént, ami nem feltétlenül egyezik meg a
trace
parancsban megadott változónévvel. A
művelet argumentum a végrehajtott hozzáférés fajtája
szerint "r", "w" vagy "u".
A figyelő parancs végrehajtása ugyanazon az eljáráshívási szinten
történik, mint a figyelt hozzáférés. Ezért a parancs hozzáférhet az
aktuális lokális változókhoz (persze ha a parancs eljárást hív meg, az
eljárás a saját lokális változóit fogja látni, ha nem ad ki upvar
parancsot).
Olvasás vagy írás miatt meghívott figyelő parancs végrehajtása alatt ideiglenesen szünetel az olvasások és írások figyelése. A figyelő parancs olvasás esetén a változó kiolvasása előtt, írás esetén a változó értékének megváltoztatása után kerül végrehajtásra. Ezért ha a figyelő parancs értéket ad a figyelt változónak, azzal meghatározza az olvasott vagy írt értéket. A figyelő parancsban keletkező kivételek az olvasást vagy írást kezdeményező parancsnak adódnak tovább.
A törlés figyelése egyaránt kiterjed az unset
paranccsal kiváltott
törlésekre és a lokális változók automatikus törlésére eljárásból való
visszatéréskor. A figyelő parancs a változó törlése illetve az
eljárás elhagyása után hívódik meg. Végrehajtása alatt a változók
figyelése változatlanul érvényben marad. A figyelő parancsban fellépő
kivételek elnyelődnek.
Egy változó figyelése csak akkor szűnik meg, ha megszüntetjük a
trace
vdelete
paranccsal, vagy ha a változót
törlik. Egy tömb elemének törlése nem érinti a tömb egészére
vonatkozó figyeléseket.
Egy változót egyszerre több paranccsal is figyeltethetünk, a parancsok abban a sorrendben hívódnak meg, amilyen sorrendben a változóhoz rendeltük őket. Az egész tömbre vonatkozó figyelő parancsok végrehajtása megelőzi a konkrét tömbelemre vonatkozókét.
trace vdelete változónév művelet parancsMegszünteti a megadott változóra vonatkozó azon figyelést, amelyet azonos argumentumokkal meghívott
trace
variable
paranccsal rendeltünk el. Ha ilyen figyelés
nincsen, nem történik semmi. Üres stringet ad vissza.
trace vinfo nameVisszaadja a megadott változóra vonatkozó figyelések listáját. Minden figyelést egy kételemű lista ír le, ahol az első elem a figyelt műveleteket adja meg, a második elem pedig a figyelő parancsot.
info tárgy ?arg ...?Az
info
parancs információkat szolgáltat a végrehajtó Tcl
interpreterről, például annak változóiról vagy eljárásairól.
info exists változónévEgyet ad vissza, ha a megnevezett változó létezik a pillanatnyi végrehajtási szinten, külÖnben nullát.
info vars ?minta?A pillanatnyi végrehajtási szinten látható változók listáját adja vissza. Ha megadunk egy mintát, akkor a lista csak azokra a változónevekre terjed ki, amelyek a
string match
parancs értelmében illeszkednek a mintára.
info globals ?minta?A létező globális változók neveinek listáját adja vissza. Ha megadunk egy mintát, akkor a lista csak azokra a változónevekre terjed ki, amelyek a
string
match
parancs értelmében illeszkednek a mintára.
info locals ?minta?A pillanatnyi végrehajtási szinten létező valódi lokális változók neveinek listáját adja vissza (a
global
vagy upvar
paranccsal definiált
változók nem valódi lokális változók). Ha megadunk egy mintát, akkor
a lista csak azokra a változónevekre terjed ki, amelyek a string match
parancs értelmében illeszkednek a mintára.
info procs ?minta?A
proc
paranccsal
definiált eljárások neveinek listáját adja vissza. Ha megadunk egy
mintát, akkor a lista csak azokra az eljárásnevekre terejed ki,
amelyek a string
match
parancs értelmében illeszkednek a mintára.
info args eljárásnévA megnevezett Tcl eljárás formális paraméterneveinek listáját adja vissza. Létező Tcl eljárás nevét kell megadnunk.
info default eljárásnév paraméternév változónévHa a megnevezett Tcl eljárás megadott formális paraméterének nincsen alapértelmezett értéke, nullát ad vissza. Különben egyet ad vissza és az alapértelmezett értéket értékül adja a változónév nevű változónak. Létező Tcl eljárást és annak létező formális paraméterét kell megadnunk.
info body eljárásnévA megnevezett Tcl eljárás törzsét adja vissza. Létező Tcl eljárás nevét kell megadnunk.
info commands ?minta?A létező Tcl parancsok neveinek listáját adja vissza, beleértve a predefinit parancsok és a
proc
paranccsal definiált
eljárások neveit. Ha megadunk egy mintát, akkor a lista csak azokra a
parancsnevekre terejed ki, amelyek a string match
parancs értelmében illeszkednek a mintára.
info complete parancsEgyet ad vissza, ha parancs nem tartalmaz nyitott zárójeleket vagy idézőjeleket, különben nullát. Segítségével soronként Tcl parancsokat olvasó programok eldönthetik, hogy az egyik sorban megkezdett Tcl parancs folytatódik-e a következő sorban.
info cmdcountAz interpreter által eddig végrehajtott parancsok számát adja vissza.
info scriptA legbelső, a Tcl interpreter által végrehajtott fájl nevét adja vissza. Ha a Tcl interpreter nincsen fájl végrehajtása közben, a visszatérési érték üres string.
info level ?szint?Ha argumentum nélkül hívjuk meg, a pillanatnyi végrehajtási szintet adja vissza (a globális szint 0, a globális szintről hívott eljárás szintje 1, sít.). Különben a visszatérési érték a megadott szinten végrehajtott eljárás nevét és argumentumait tartalmazó lista. Pozitív számokkal abszolút végrehajtási szintekre hivatkozhatunk, nullával a pillanatnyi végrehajtási szintre, negatív számokkal pedig relatív végrehajtási szintekre (a hívó eljárás végrehajtási szintje -1, az őt hívóé -2, sít.).
info libraryA standard Tcl scripteket tartalmazó könyvtár nevét adja vissza.
info tclversionA futó Tcl verziószámát adja vissza x.y alakban. Az azonos egészrészű Tcl verziók növekvő törtrész szerint egymással felülről kompatibilisek.
info patchlevelA futó Tcl kiadásszámát adja vissza. A kiadásszám a verziószámnál részletesebb adat, amely minden alfa, béta vagy kész kiadást egyértelműen azonosít.
Amikor olyan alkalmazással dolgozunk, amelynek vezérlése részben vagy
egészben parancsokkal történik, gyakran fordul elő, hogy korábban
kiadott parancsokat szertnént megismételni, esetleg kisebb
változtatással. Az alkalmazást akkor érezzük igazán kényelmesnek, ha
nyújt olyan lehetőségeket, amelyek révén elkerülhetjük a parancs
sokadszori begépelését. A Tcl-ben írt és Tcl parancsokat fogadó
programokat a history
parancs ruházza fel a kívánt
lehetőséggel.
history ?művelet? ?arg ...?A
history
parancs lehetővé teszi, hogy egy történeti
listában tartsuk nyilván az utoljára kiadott egynéhány parancsot,
és hogy ezekre hivatkozhassunk. A hivatkozás három formában történhet:
string match
parancs szerint illeszkedik.
Ebbe a kategóriába azok a parancsok tartoznak, amelyeknek nincsen közvetlen szerepe a történeti listában rögzített parancsok ismételt kiadásában.
history keep méretEzzel a paranccsal adhatjuk meg, hogy a történeti lista hány parancsot őrizzen meg. Alapértelmezésben a történeti lista 20 parancsot tud tárolni. A parancs üres stringet ad vissza.
history add parancs ?exec?A megadott parancsot felveszi a történeti lista végére. Ha az utolsó argumentum
exec
vagy ennek prefixe, parancs
végrehajtódik, és visszatérési értéke lesz a history
add
parancs visszatérési értéke is. Különben üres
stringet kapunk vissza.
history change új ?hivatkozás?A hivatkozott (alapértelmezésben az utolsó) parancsot lecseréli az új parancsra.
history nextidAzt a sorszámot adja vissza, amelyet a következőként a történeti listába kerülő parancs fog kapni. Ezt a számot a parancsokat fogadó alkalmazás például kiírhatja a parancs bekérése előtt.
history ?info? ?szám?Visszaad egy stringet, amely ember által olvasható formában tartalmazza a történeti listát (soronként egy-egy parancs sorszámát és magát a parancsot). A szám argumentummal a listát az utolsó egynéhány parancsra korlátozhatjuk.
Ebbe a kategóriába azok a parancsok tartoznak, amelyekkel a
felhasználó a történeti listában rögzített parancsokat újra fel tudja
használni. Ha a történeti listába az újrafelhasznált parancs nem
szövegszerűen kerülne be, hanem history
hívást
tartalmazva, akkor a további újrafelhasználást megnehezítené, hogy a
history
hívások (például a relatív sorszámok miatt) mást
és mást eredményeznének az eredeti végrehajtáskor és az egyes
ismétlések alkalmával. Ezért az ismétlő parancsok a történeti lista
legújabb bejegyzését, ha az tartalmaz history
hívást,
helyettesítik az eredően végrehajtott paranccsal. Így a történeti
listát szolgáltató alkalmazásnak elég a felhasználó által beírt
parancsot a végrehajtás előtt a történeti listába felvennie, hogy a
történeti listába a megfelelő dolgok kerüljenek.
history redo ?hivatkozás?Végrehajtja a hivatkozott (alapértelmezésben az utolsó) parancsot és visszaadja annak eredményét.
history substitute régi új ?hivatkozás?A hivatkozott (alapértelmezésben az utolsó) parancsban régi minden előfordulását újra helyettesíti, végrehajtja az így adódó parancsot, és visszaadja az eredményt.
history event ?hivatkozás?Visszaadja a hivatkozott (alapértelmezésben az utolsó) parancsot.
history words szelektor ?hivatkozás?Visszaadja a hivatkozott (alapértelmezésben az utolsó) parancs szelektor által meghatározott szavait, egymástól szóközzel elválasztva. Szelektornak három formája megengedett:
string match
parancs
szerint illeszkedő szavait jelenti.
rename régi újA
rename
parancs a régi nevű parancsot
átnevezi új nevűre. Ha új üres string,
a régi parancs törlődik. A rename
üres
stringet ad vissza.
time script ?szám?A
time
szám-szor (alapértelmezésben egyszer)
végrehajtja a megadott scriptet, és visszaad egy
n microseconds per iterationalakú stringet, amely a script végrehajtásához szükséges átlagos valós időt jellemzi.
unknown parancsnév ?arg ...?Amikor a Tcl interpreter nem létező parancs hívásával kerül szembe, megvizsgálja, hogy létezik-e
unknown
nevű parancs. Ha
nem létezik, akkor hibaüzenetet ad vissza. Viszont ha létezik, a Tcl
interpreter meghívja, és arugmentumként átadja neki a nem létező
parancs nevét és a hívás argumentumait (az átadott argumentumokon már
megtörténtek a helyettesítések). Lásd a standard Tcl könyvtárban
definiált unknown
parancsot.