Ho due script tcl. E voglio eseguire il secondo script quando ho finito. Come posso farlo?Come eseguire script tcl in altri script tcl?
risposta
Dipende da cosa intendi davvero.
Un modo è quello di scrivere un terzo script ("master"), che avrebbe fatto
source /the/path/to/the/first.tcl
source /the/path/to/the/second.tcl
Un altro modo è quello di aggiungere solo la seconda chiamata al source
dall'esempio precedente per la parte inferiore del primo script.
Modifica il primo approccio: se gli script da eseguire si trovano nella stessa directory dello script maestro, un modo idiomatico per source
loro è
set where [file dirname [info script]]
source [file join $where first.tcl]
source [file join $where second.tcl]
questo modo di sourcing funzionerà non importa quale sia il la directory del processo corrente è e dove si trova la directory del progetto.
Hai solo bisogno di utilizzare il codice sorgente per eseguire il secondo script.
source "/tmp/whatever.tcl"
Mentre questo è generalmente una risposta corretta, siccome la questione non è stata formulata precicely ci sono tonnellate di modi per raggiungere l'obiettivo di esecuzione di codice tcl tcl dall'interno. Non voglio approfondire questo argomento, perché capire l'esecuzione del codice è uno dei punti principali della comprensione di questo.
C'è fonte
Il comando di origine non deve essere confondere con l'esecuzione di script in modo classico, quello che penso lo starter thread è chiesto.
Il comando di origine è come il comando "include" in c/perl/php. I linguaggi come java o python d'altra parte hanno solo meccanismi di "importazione".
La differenza è che queste lingue creano un database interno di pacchetti disponibili, che sono collegati ai corrispondenti file source/binary/bytecode. Scrivendo un'istruzione import, vengono caricati i sorgenti sorgente, i file btecode oi file binari. Ciò consente una gestione delle dipendenze più approfondita senza scrivere codice aggiuntivo. In questo modo è possibile aprirlo con namespace e il pacchetto richiede un comando. Esempio:
Supponiamo di avere questo source.tcl:
proc foo {bar} {puts "baz"}
set BAM "BOO"
Ora, avete i vostri script "maestro" come lo chiami tu. Lo chiamo "principale". Ha il contenuto:
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"
Il comando exec
Se si può vivere con un ulteriore sovraccarico di iniziare una nuova istanza dell'interprete si potrebbe anche fare:
set BAM {my important data}
exec tclsh source.tcl
#The variable BAM will not be modified. You can not use the function foo.
Il comando eval
Eval può valutare una stringa o una lista (in tcl è una stringa) come se fosse codice programmato. Dovresti caricare il file sorgente completo su una stringa. E poi usa eval, per valutare il codice all'interno di un ambito separato, per non sovrascrivere le cose nel tuo file sorgente principale.
set fp [open "somefile" r]
set code_string [read $fp]
close $fp
eval $code_string
- 1. Rilevamento statico di errori negli script Tcl
- 2. Passare argomenti dalla riga di comando in uno script tcl
- 3. Script per eseguire altri script in sqldeveloper
- 4. Peculiar Tcl sintassi
- 5. Funzioni anonime Tcl
- 6. Variabile statica in Tcl
- 7. Catch "Tcl Interpreter Error"
- 8. abbiamo bisogno di "unset" variabili in TCL?
- 9. Numero complesso aritmetico in Tcl?
- 10. Come mettere Commenti ai blocchi in TCL
- 11. come $ expect_out funziona in TCL/EXPECT?
- 12. Come aggiornare Tcl/Tk in Python?
- 13. Come concatenare concatenando stringhe in Tcl?
- 14. Come inizializzare un array in Tcl?
- 15. Come eseguire comandi sulla stessa shell TCL usando Python
- 16. Come attendere il completamento di un processo usando tcl-expect
- 17. Passing list alla procedura Tcl
- 18. rimuovere una sottolista dalla lista in tcl
- 19. TCL come chiamare i gestori di articoli
- 20. Come utilizzare una o una istruzione di commutazione tcl?
- 21. Python Tkinter che lancia errore Tcl
- 22. il comando tcl reindirizza a una variabile, la versione tcl è 8.4
- 23. Altri editor di script?
- 24. definizione e looping attraverso gli array tcl
- 25. Conosci qualche modo creativo per interfacciare Python con Tcl?
- 26. In TCL, possiamo passare i parametri in questo modo?
- 27. Come stampare tutte le variabili di ambiente in TCL?
- 28. Come posso tagliare la sottostringa da una stringa in tcl
- 29. Tcl domanda - come elencare le funzioni in un namespace
- 30. Gestione dei numeri con zeri iniziali in Tcl