A Tcl shell egy Tcl interpretert tartalmazó program, amely interaktív vagy kötegelt üzemmódban parancsokat hajt végre.
tclsh ?fájlnév arg ...?A
tclsh akkor működik
interaktív üzemmódban, ha argumentumok nélkül indítjuk, és a standard
inputja terminálra csatlakozik. Különben kötegelt üzemmódban működik.
A tclsh a globális tcl_interactive változót
1-re állítja, ha interaktívan fut, különben 0-ra.
Interaktív üzemmódban a tclsh induláskor Tcl scriptként
végrehajtja a felhasználó home-könyvtárában található
.tclshrc fájlt, ha az létezik. Ezután soronként
parancsokat olvas be a terminálról, végrehajtja őket, és kiírja
eredményüket vagy hibaüzenetüket.
Kötegelt üzemmódban a tclsh az első argumentumban
megnevezett (argumentumok hiányában a standard inputról olvasott) Tcl
script fájlt hajtja végre.
A tclsh akkor terminál, ha az interpreterben meghívják az
exit parancsot, vagy ha
fájl vége állapotba kerül az olvasott fájl illetve a standard
input.
A tclsh argumentumait a következő
globális változókban teszi hozzáférhetővé:
argc | az argumentumok száma a script fájl nevét nem beleértve |
argv | a script fájl neve után megadott argumentumok listája (üres string, ha ilyenek nincsenek) |
argv0 | ha megadtuk, fájlnevet
tartalmazza, különben azt a nevet, amelyen a tclsh-t
elindítottuk |
Két további globális változó az interaktív
üzemmód promptját határozza meg. A tcl_prompt1
változónak a promptot kiíró Tcl scriptet kell tartalmaznia. A
tcl_prompt2 változóban adhatunk meg egy másodlagos
promptot kiíró scriptet a többsoros parancsok elsőtől különböző sorai
elé. Ha a megfelelő változó nem létezik, az alapértelmezett
elsődleges prompt a "%", a másodlagos az üres string.
Egy Tcl scriptet úgy tudunk önállóan futtathatóvá tenni, ha első
sorában egy "#!" prefix után megadjuk a tclsh teljes
elérési útját, és a script fájlt végrehajthatóként jelöljük meg.
Például:
#!/usr/local/bin/tclshHa a
tclsh elérési útvonalát nem akarjuk rögzíteni a
script fájlban, akkor a következő leleményes megoldás kínálkozik:
#!/bin/sh # a következő sor újraindítja a scriptet a tclsh-ben \ exec tclsh "$0" "$@"
tclsh-t a scriptre és a scriptnek megadott
eredeti argumentumokra. A tclsh a második sort záró '\'
miatt a harmadik sort a második sor folytatásának tekinti, és ezzel
mint megjegyzést ignorálja.