Следующий скрипт будет делать то, что вы просите, как я понимаю. Он будет запускать последовательность команд gnuplot неинтерактивно, а затем продолжит тот же сеанс gnuplot из командной строки. Комментарии в сценарии указывают, куда вы должны поместить неинтерактивные команды.
#!/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
Заметки:
Метод, который я использую для эмуляции приглашения gnuplot, - это быстрый взлом, который, несомненно, может быть улучшен и на самом деле совершенно не нужен.
Если это не то, что вы пытаетесь сделать, пожалуйста, предоставьте команды, которые вы запускаете (пробовали) из терминала, а также достаточную выдержку из скрипта gnuplot, который вы вызываете.
Чтобы улучшить это, взгляните на именованные каналы . Если вы хотите сохранить такой скрипт для длительного использования, я бы пошел по этому пути из соображений удобства обслуживания. Этот скрипт получает очень похожий результат с более «грубыми» методами.
Например, я использую stderr для вещей, которые не идут в gnuplot для удобства - подсказка, информация о команде выхода. С ними лучше обращаться по именованной трубе.