Une autre façon est de simplement ajouter le deuxième appel à source à partir de l'exemple ci-dessus vers le bas de la première script.
Amendement à la première approche: si les scripts à exécuter sont situés dans le même répertoire que le maître de script, un idiomatiques façon de source est
Même si c'est généralement une bonne réponse, parce que la question n'était pas precicely formulé il y a des tonnes de façons d'arriver à l'objectif de courir tcl code à partir de tcl.
Je wan pas dans le détail, parce que la compréhension de l'exécution de code est un point majeur dans la compréhension de tcl itselve.
Il est source de
La source de commande ne doit pas être confondre avec l'exécution de scripts de manière classique, ce que je pense que le thread starter a demandé.
La source de commande est comme le "include" de commande de c/perl/php.
Des langues comme java ou python, sur l'autre main seulement "importer" des mécanismes.
La différence est que ces langues de créer une base de données interne de paquets disponibles, qui sont liés à la source correspondant/binaire/fichiers bytecode. Par l'écriture d'une instruction d'importation, lié à la source ou en code binaire ou binaire les fichiers sont chargés. Cela permet plus en profondeur de la gestion de la dépendance, sans écrire de code supplémentaire.
En tcl, ce peut être réalisée avec des espaces de noms et le package nécessitent de commande.
Exemple:
Supposons que vous avez cette source.tcl:
proc foo {bar}{puts "baz"}set BAM "BOO"
Maintenant, vous avez votre "maître" script comme vous l'appelez. Je l'appelle "main". Elle a le contenu:
set BAM {my important data}
source source.tcl
#also the function foo can now be used, becouse source reads the whole script
foo {wuz}set BAM
#will output "BOO"
La commande exec
Si vous pouvez vivre avec la charge supplémentaire de commencer une toute nouvelle interprète exemple vous pouvez aussi faire:
set BAM {my important data}exec tclsh source.tcl
#The variable BAM will not be modified. You can not use the function foo.
La commande eval
Eval peut évaluer une chaîne ou une liste (en tcl tout est une chaîne de caractères) comme il doit être programmé de code.
Vous devez charger le complet du fichier source à une chaîne. Et puis utiliser la fonction eval, pour évaluer le code à l'intérieur d'une séparation de portée, pour ne pas écraser des choses dans votre fichier source principal.
set fp [open "somefile" r]set code_string [read $fp]
close $fp
eval $code_string
Dépend de ce que tu veux vraiment dire.
Une façon est d'écrire un troisième ("master") script qui ferait
Une autre façon est de simplement ajouter le deuxième appel à
source
à partir de l'exemple ci-dessus vers le bas de la première script.Amendement à la première approche: si les scripts à exécuter sont situés dans le même répertoire que le maître de script, un idiomatiques façon de
source
estCette façon de sourcing fonctionne, peu importe ce que le processus actuel du répertoire et où se trouve le répertoire du projet est situé.
OriginalL'auteur kostix
Vous suffit d'utiliser la source pour exécuter le 2ème script.
OriginalL'auteur TrojanName
Même si c'est généralement une bonne réponse, parce que la question n'était pas precicely formulé il y a des tonnes de façons d'arriver à l'objectif de courir tcl code à partir de tcl.
Je wan pas dans le détail, parce que la compréhension de l'exécution de code est un point majeur dans la compréhension de tcl itselve.
Il est source de
La source de commande ne doit pas être confondre avec l'exécution de scripts de manière classique, ce que je pense que le thread starter a demandé.
La source de commande est comme le "include" de commande de c/perl/php.
Des langues comme java ou python, sur l'autre main seulement "importer" des mécanismes.
La différence est que ces langues de créer une base de données interne de paquets disponibles, qui sont liés à la source correspondant/binaire/fichiers bytecode. Par l'écriture d'une instruction d'importation, lié à la source ou en code binaire ou binaire les fichiers sont chargés. Cela permet plus en profondeur de la gestion de la dépendance, sans écrire de code supplémentaire.
En tcl, ce peut être réalisée avec des espaces de noms et le package nécessitent de commande.
Exemple:
Supposons que vous avez cette source.tcl:
Maintenant, vous avez votre "maître" script comme vous l'appelez. Je l'appelle "main". Elle a le contenu:
La commande exec
Si vous pouvez vivre avec la charge supplémentaire de commencer une toute nouvelle interprète exemple vous pouvez aussi faire:
La commande eval
Eval peut évaluer une chaîne ou une liste (en tcl tout est une chaîne de caractères) comme il doit être programmé de code.
Vous devez charger le complet du fichier source à une chaîne. Et puis utiliser la fonction eval, pour évaluer le code à l'intérieur d'une séparation de portée, pour ne pas écraser des choses dans votre fichier source principal.
OriginalL'auteur Lis