Wie führe ich das tcl-Skript in einem anderen tcl-Skript aus?

7

Ich habe zwei tcl-Skripte. Und ich möchte ein zweites Skript ausführen, wenn es fertig ist. Wie kann ich es tun?

    
d_pilot 14.02.2012, 10:13
quelle

3 Antworten

15

Hängt davon ab, was du wirklich meinst.

Eine Möglichkeit besteht darin, ein drittes Skript ("Master") zu schreiben, das

machen würde %Vor%

Eine andere Möglichkeit besteht darin, den zweiten Aufruf von source aus dem obigen Beispiel an den unteren Rand des ersten Skripts hinzuzufügen.

Ergänzung zum ersten Ansatz: Wenn sich die auszuführenden Skripte im selben Verzeichnis wie das Master-Skript befinden, ist idiomatisch zu source das

%Vor%

Auf diese Weise funktioniert das Sourcing unabhängig vom aktuellen Prozessverzeichnis und vom Speicherort des Projektverzeichnisses.

    
kostix 14.02.2012, 11:18
quelle
3

Sie müssen nur die Quelle verwenden, um das zweite Skript auszuführen.

%Vor%     
TrojanName 14.02.2012 11:19
quelle
1

Obwohl dies im Allgemeinen eine korrekte Antwort ist, da die Frage nicht präzise formuliert wurde, gibt es Tonnen von Möglichkeiten, das Ziel zu erreichen, tcl-Code von innerhalb von tcl auszuführen. Ich möchte im Detail darauf eingehen, denn das Verständnis der Ausführung von Code ist ein wesentlicher Punkt, um Tcl zu verstehen.

Es gibt eine Quelle

Der Source-Befehl sollte nicht mit der klassischen Ausführung von Skripten verwechselt werden, was der Thread-Starter meiner Meinung nach verlangt hat.

Der Quellbefehl ist wie der "include" -Befehl in c / perl / php. Sprachen wie Java oder Python haben dagegen nur "Import" -Mechanismen.

Der Unterschied besteht darin, dass diese Sprachen eine interne Datenbank mit verfügbaren Paketen erstellen, die mit den entsprechenden Quell- / Binär- / Bytecode-Dateien verknüpft sind. Durch das Schreiben einer Import-Anweisung werden verknüpfte Quell- oder Bytecode- oder Binärdateien geladen. Dies ermöglicht ein detaillierteres Abhängigkeitsmanagement, ohne zusätzlichen Code zu schreiben. In tcl kann dies mit Namespaces und dem Befehl package required erreicht werden. Beispiel:

Angenommen, Sie haben diese Quelle.tcl:

%Vor%

Nun haben Sie Ihr "Master" -Skript, wie Sie es nennen. Ich nenne es "Haupt". Es hat den Inhalt:

%Vor%

Der Befehl exec

Wenn Sie mit zusätzlichen Kosten rechnen können, indem Sie eine komplett neue Interpreter-Instanz starten, können Sie auch Folgendes tun:

%Vor%

Der eval-Befehl

Eval kann eine Zeichenkette oder eine Liste (in tcl ist alles eine Zeichenkette) wie ein programmierter Code auswerten. Sie müssten die vollständige Quelldatei in eine Zeichenfolge laden. Und dann benutze Eval, um den Code in einem separaten Bereich auszuwerten, um Inhalte in deiner Hauptquelldatei nicht zu überschreiben.

%Vor%     
Lis 15.01.2018 15:48
quelle

Tags und Links