Das folgende Skript wird tun, was Sie fragen, wenn ich es verstehe. Es wird eine Folge von gnuplot-Befehlen nicht interaktiv ausführen und dann dieselbe gnuplot-Sitzung von der Befehlszeile aus fortsetzen. Die Kommentare im Skript geben an, wo Sie die nicht interaktiven Befehle einfügen sollten.
#!/bin/bash - # Cheap 'trick' to show gnuplot prompt # There are better ways prmpt () { (echo -n "gnuplot> " >&2) } # Function that serves as a pipe to gnuplot; # non-interactively then interactively gnuplotInPipe () { # simple example from http://gnuplot.sourceforge.net/demo/simple.html # All non interactive stuff goes here: echo "set title \"Simple Plots\" font \",20\"" echo "set key left box" echo "set samples 50" echo "set style data points" echo "plot [-10:10] sin(x),atan(x),cos(atan(x))" # end of non-interactive gnuplot commands (echo "Type 'quit' to exit" >&2) prmpt # Here we read in lines (terminated with newline) # and pipe them directly to the same gnuplot # session while true; do read -er cmd if [ "$cmd" == 'quit' ]; then break fi echo "$cmd" prmpt done } # Call gnuplotInPipe and pipe it's output # to gnuplot gnuplotInPipe | gnuplot
Anmerkungen:
Die Methode, die ich zum Emulieren der Gnuplot-Eingabeaufforderung verwende, ist ein schneller Hack, der zweifellos verbessert werden kann und eigentlich völlig unnötig ist.
Wenn dies nicht das ist, was Sie versuchen zu tun, geben Sie bitte die Befehle an, die Sie vom Terminal ausführen (versucht haben), sowie einen ausreichenden Auszug des gnuplot-Skripts, das Sie aufrufen.
Um dies zu verbessern, werfen Sie einen Blick auf Named Pipes . Wenn Sie ein Skript wie dieses für die langfristige Verwendung verwalten möchten, gehe ich aus Gründen der Wartbarkeit diesen Weg. Dieses Skript erzielt ein sehr ähnliches Ergebnis mit mehr "rohen" Force-Methoden.
Zum Beispiel verwende ich stderr für Dinge, die nicht zur Bequemlichkeit gnuplot werden - die Eingabeaufforderung, der Befehl zum Beenden des Befehls. Diese würden besser mit einer Named Pipe gehandhabt.