So rufen Sie gnuplot für verschiedene Skripte unabhängig voneinander auf

So rufen Sie gnuplot für verschiedene Skripte unabhängig voneinander auf

ich verwende GNUplot, um aus Datenpunkten Zahlen zu erstellen. GNUplot arbeitet mit einfachen Skripten, die einfache Parameter/Variablen enthalten, wie den Bereich der x- oder y-Achse, Einstellungen für Linienfarben und ähnliches. Wenn ich eines dieser Skripte aufrufe, dann:

gnuplot script1.gpl

es funktioniert gut, aber wenn ich laufe

gnuplot *.gpl

Beim Ausführen für alle Dateien im aktuellen Verzeichnis habe ich Probleme, da einige der Einstellungen von einem Skript ins nächste übertragen werden. Das liegt wahrscheinlich daran, dass gnuplot die Parameter nicht zurücksetzt und wenn ich sie im folgenden Skript nicht explizit überschreibe, sind die Einstellungen immer noch da. Deshalb habe ich versucht, es mit find anders auszuführen:

find . -name '*.gpl' -exec gnuplot {} \;

aber ich bekomme wieder die gleichen problematischen Ergebnisse. Was ich also brauche, ist ein Befehl, der für jede Datei denselben Befehl ausführt, aber so, als ob er für jede Datei manuell aufgerufen würde.

Antwort1

Ich würde erwarten, finddass es mit einem einzigen Aufruf funktioniert. Wenn keine Zwischendateien erstellt werden, würde ich vorschlagen, ein Bash-Präfix (oder ein anderes Shell-Präfix) hinzuzufügen, um die Ausführung in einer Sub-Shell zu erzwingen. Oder Sie können Folgendes versuchen:

for i in *.gpl
do 
  ( gnuplot "$i" )
done

Die Klammern erzwingen eine Unter-Shell, aber ich denke nicht, dass dies erforderlich sein sollte.

verwandte Informationen