Я хочу написать скрипт, который сначала запускает программу, а затем говорит ей выполнить несколько команд, а затем завершить работу. Давайте рассмотрим пример.
Я написал этот скрипт, myscript.sh
и он не работает так, как я хочу. Он просто запускает gnuplot и ждет его завершения, а затем запускает другие команды; что, очевидно, приводит к ошибкам.
#!/bin/bash
gnuplot
plot sin(x)
pause -1
quit
Я думаю, понятно, что я пытаюсь сделать; если нет, то дайте мне знать в комментариях.
command-line
bash
scripts
gnuplot
Михир Гадгил
источник
источник
-p
в этом примере это не очень полезно; если вы нажмете ввод в терминале, gnuplot выйдет, и окно графика станет полностью неинтерактивным, за исключением команды выхода. Выход 3-го просто приходит и уходит (не видно вообще). Последний выводит вывод, но поскольку gnuplot закрывается немедленно, окно графика снова не является интерактивным (кроме того, оно показывает крошечный график площадью 1 кв. См). Такpause -1
надо.Один из способов заключается в
-persist
:Другой способ, если вам нужно предварительно обработать данные, это с помощью Bash
Here Document
(см.man bash
):источник
expect
...chmod u+x myscript.gnu
и выполнять непосредственно./myscript.gnu
Жюст ноту вы забыли[]
в YRange:set yrange [$minval:$maxval]
.Как объяснено на
man
страницах ,gnuplot
ожидается ввод данных из командного файла в так называемом пакетном сеансе . Например, вы можете записать строкуplot sin(x)
в файлmyplot
и затем выполнитьgnuplot myplot
.Если вы пропустите командный файл, как это делает ваш скрипт, вы получите интерактивный сеанс .
источник
Упомянутый метод here-doc очень полезен для Gnuplot и многих других программ. Используя переменные оболочки в командах Gnuplot в here-doc, вы можете параметризовать свои графики с помощью входных данных из командной строки сценария оболочки. Благодаря простой настройке, вы можете массово производить сюжеты из огромных массивов «больших данных». Раньше я использовал точные диаграммы рассеяния с 20000 до 80000 точек на график в сотнях анализов конечной структуры с использованием именно этого метода. Это очень мощный метод.
источник
Это может помочь
нажмите здесь для более подробной информации
источник