tclsh Tcl Applications
NOM
tclsh - Simple shell contenant un Interpréteur Tcl
SYNTAXE
tclsh ?fileName arg arg ...?
DESCRIPTION
Tclsh est une application shell-like qui lit les commandes Tcl à partir de son entrée standard ou à partir d'un fichier et les évalue. Si appelée sans arguments alors s'exécute interactivement, en lisant les commandes Tcl de l'entrée standard et affichant les résultats et les message d'erreurs sur la sortie standard. Elle s'exécute jusqu'à ce que la commande
exit soit appelée ou jusqu'à ce que la fin-de-fichier soit atteinte sur son entrée standard. S'il existe un fichier
.tclshrc (ou
tclshrc.tcl sur les plateformes Windows) dans le répertoire home de l'utilisateur,
tclsh évalue le fichier comme script Tcl juste avant de lire la première commande sur l'entrée standard
FICHIERS SCRIPT
Si
tclsh est appelé avec des arguments alors le premier argument est le nom d'un script et tous les arguments supplémentaires sont rendus disponibles au script comme variables (voir ci-dessous). Au lieu de lire les commandes à partir de l'entrée standard
tclsh lira les commandes Tcl du fichier indiqué;
tclsh finira quand il atteint la fin du fichier. Il n'y a pas d'évaluation automatique de
.tclshrc dans ce cas, mais le script peut toujours le
sourcer si désiré.
Si vous créer un script Tcl dans un fichier dont première ligne est
#!/usr/local/bin/tclsh
alors vous pouvez appeller le script directement à partir de votre shell si vous rendez le fichier exécutable. Ceci suppose qui tclsh aura été installé dans l'emplacement par défaut dans /usr/local/bin; s'il est installé ailleurs vous aurez à modifier la ligne plus haut. De nombreux systèmes UNIX n'autorisent pas la ligne #! à dépasser 30 caractères, donc soyez sûrs que l'exécutable tclsh peut être accédé avec un nom de chemin court.
Une meilleure approche est de commencer vos fichiers script avec les trois lignes suivantes:
#!/bin/sh
# la ligne suivante lance tclsh\
exec tclsh "$0" "$@"
Cette approche a trois avantages sur l'approche précedente. Premièrement, l'emplacement du binaire
tclsh n'a pas d'être codé en dur dans le script: il peut être n'importe où dans votre chemin de recherche shell. Deuxièmement, elle resout la limite de 30 caractères pour le nom de chemin dans la précedente approche. Troisièmement, cette approche fonctionnera même si
tclsh est lui-même un shell script (c'est fait sur quelques systèmes de manière à gérer de multiples architectures ou systèmes d'exploitations: le script
tclsh selectionne un parmi plusieurs binaire à exécuter) Les trois lignes mettent en cause à la fois
sh et
tclsh pour traiter le script, mais
exec est seulement exécuté par
sh.
sh traite le script en premier; il traite la seconde ligne comme un commentaire et exécute la troisième ligne. L'instruction
exec provoque l'arrêt du traitement par le shell et le démarrage de
tclsh pour traiter le script entier. Quand
tclsh démarre, it traite les trois lignes comme des commentaires, car le backslash à la fin de la second ligne cause l'interprétation de la troisième ligne comme suite du commentaire sur la seconde ligne
VARIABLES
Tclsh fixe les variables Tcl suivantes:
- argc
- Contient un compte du nombre des arguments arg (0 si aucun), non inclus le nom du fichier script.
argv
- Contient une liste Tcl dont les éléments sont les arguments arg, dans l'ordre, ou une chaîne vide si il n'y a pas d'arguments arg.
argv0
- Contient fileName si il a été spécifié. Autrement, contient le nom par lequel tclsh a été appelé.
tcl_interactive
- Contient 1 si tclsh s'exécute interactivement (aucun fileName n'a été spécifié et l'entrée standard est un périphérique terminal-like), 0 autrement.
PROMPTS
Quand tclsh est appelé interactivement il attend normalement chaque commande avec "%" Vous pouvez changer le prompt en fixant les variables tcl_prompt1 et tcl_prompt2 Si la variable tcl_prompt1 existe alors elle doit consister en un script Tcl pour produire un prompt; au lieu de produire un prompt tclsh evaluera le script dans tcl_prompt1. La variable tcl_prompt2 est utilisée d'une manière analogue quand un saut de ligne est tapé mais que la commande courante n'est pas encore complète; si tcl_prompt2 n'est pas fixé alors aucun prompt ne s'affiche pour les commandes incomplètes