Mam dwa skrypty tcl. I chcę uruchomić drugi skrypt po pierwszym zakończeniu. Jak mogę to zrobić?Jak uruchomić skrypt tcl w innym skrypcie tcl?
Odpowiedz
Zależy od tego, co naprawdę masz na myśli.
Jednym ze sposobów jest napisać trzeci („master”) skrypt, który zrobi
source /the/path/to/the/first.tcl
source /the/path/to/the/second.tcl
Innym sposobem jest po prostu dodać drugie połączenie do source
z powyższego przykładu do końca pierwszego scenariusza.
Zmiana pierwszego podejścia: jeśli skrypty do wykonania znajdują się w tym samym katalogu co skrypt nadrzędnej, idiomatycznym sposób na source
nich jest
set where [file dirname [info script]]
source [file join $where first.tcl]
source [file join $where second.tcl]
Ten sposób pozyskiwania będą działać bez względu na katalog bieżącego procesu to i gdzie znajduje się katalog projektu.
Wystarczy użyć źródła, aby uruchomić drugi skrypt.
source "/tmp/whatever.tcl"
Chociaż jest to generalnie poprawna odpowiedź, poniewaz ta kwestia nie została sformułowana precicely istnieje mnóstwo sposobów achive cel uruchomiony kod tcl tcl od wewnątrz. Nie będę się tym zajmował szczegółowo, ponieważ zrozumienie wykonania kodu jest jednym z głównych punktów zrozumienia tcl itselve.
Jest źródłem
Komenda źródło nie należy pomieszać z wykonywania skryptów w sposób klasyczny, co myślę rozrusznik Wątek zapytałem.
Polecenie źródłowe jest podobne do polecenia "include" w języku c/perl/php. Języki takie jak Java lub Python mają tylko mechanizmy "importowania".
Różnica polega na tym, że te języki tworzą wewnętrzną bazę danych dostępnych pakietów, które są połączone z odpowiednimi plikami źródłowymi/binarnymi/kodami bajtowymi. Pisząc instrukcję importu, ładowane są powiązane pliki źródłowe, bajtowe lub binarne. Pozwala to na bardziej szczegółowe zarządzanie zależnościami bez pisania dodatkowego kodu. W tcl można to osiągnąć za pomocą przestrzeni nazw, a pakiet wymaga polecenia. Przykład:
Przypuśćmy, że masz source.tcl:
proc foo {bar} {puts "baz"}
set BAM "BOO"
Teraz masz "master" skrypt jak to nazwać. Nazywam to "głównym". Ma treść:
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"
Polecenie exec
Jeśli można żyć z dodatkowego obciążania zaczynając zupełnie nowe wystąpienie interpretera Można też zrobić:
set BAM {my important data}
exec tclsh source.tcl
#The variable BAM will not be modified. You can not use the function foo.
Komenda eval
Eval może ocenić ciąg lub listę (w tcl wszystko jest ciągiem znaków) tak, jakby był zaprogramowany kod. Musisz załadować kompletny plik źródłowy do ciągu znaków. Następnie użyj eval, aby ocenić kod w oddzielnym zakresie, aby nie nadpisywać danych w głównym pliku źródłowym.
set fp [open "somefile" r]
set code_string [read $fp]
close $fp
eval $code_string
- 1. jak uruchomić skrypty Pythona za pomocą komendy tcl exec
- 2. Swoisty Tcl składnia
- 3. Komenda tcl przekierowanie do zmiennej, tcl wersja jest 8.4
- 4. Jak korzystać z instrukcji przełącznika tcl?
- 5. Interaktywne wykresy w Tcl/Tk
- 6. pytanie o źródła w Tcl
- 7. Arytmetyka liczby zespolonej w Tcl?
- 8. Czy potrzebujemy "odprawić" zmienne w TCL?
- 9. Jak zwięźle połączyć ciągi w Tcl?
- 10. Jak umieścić Zablokuj Komentarze w TCL
- 11. Jak wydrukować wszystkie zmienne środowiskowe w TCL?
- 12. Jak zaktualizować Tcl/Tk w Pythonie?
- 13. Pełna ścieżka bieżącego skryptu TCL
- 14. Jak korzystać z pliku sed tcl
- 15. usunąć listę podrzędną z listy w tcl
- 16. TCL uzyskać nazwę proc, w którym jestem
- 17. Co oznacza ukośnik odwrotny w TCL?
- 18. Python tcl nie jest poprawnie zainstalowany
- 19. Polecenie Otwórz/Odczyt w Tcl 8.5 dla dużych plików
- 20. definiowanie i zapętlanie przez tablice tcl
- 21. Jak uzyskać wyniki (standardowe wyjście) polecenia TCL exec?
- 22. TCL jako język programowania po stronie serwera
- 23. Uzyskaj wersję TCL z wiersza polecenia?
- 24. Jak poczekać na zakończenie procesu przy użyciu tcl-expect
- 25. Pytanie Tcl - jak wyświetlić listę funkcji w przestrzeni nazw
- 26. Jak wyciąć podciągi z ciągu znaków w tcl
- 27. , w jaki sposób $ expect_out działa w TCL/EXPECT?
- 28. W TCL, czy możemy przekazywać parametry w ten sposób?
- 29. Jak użyć zmiennej jako wartości domyślnej na TCL proc argumentu
- 30. przekazywanie tablic do funkcji w tcl. Tylko upvar?