Как выполнить команды в gnuplot, использующем сценарий оболочки?

То, что я хочу сделать, записать сценарий который первые запуски программа и затем говорит этому выполнять набор команд и затем выходить. Отпускает с примером.

Я записал этот сценарий myscript.sh и это не прокладывает себе путь, я хочу это к. То, что это делает, просто выполняется gnuplot, и ожидайте его для выхода и затем выполняйте другие команды; который, очевидно, производит ошибки.

#!/bin/bash
gnuplot
plot sin(x)
pause -1
quit

Я предполагаю, что ясно, что я пытаюсь сделать; в противном случае затем сообщите мне в комментариях.

10
задан 24 November 2015 в 07:56

6 ответов

От man gnuplot или его страница справочника онлайн:

   -p,  --persist  lets  plot  windows  survive after main gnuplot program
   exits.

   -e "command list" executes the requested commands  before  loading  the
   next input file.

Поэтому то, что Вы, вероятно, хотите выполнить, является следующей командой:

gnuplot -e "plot sin(x); pause -1"
<час>

Другие варианты я сделал предложение, но которые не настолько полезны, были:

gnuplot -p -e "plot sin(x); pause -1"
gnuplot -e "plot sin(x)"
gnuplot -p -e "plot sin(x)"
11
ответ дан 23 November 2019 в 04:18

Один путь с -persist:

#!/usr/bin/gnuplot -persist
set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
set timefmt "%y/%m/%d"
set xdata time
set pointsize 1
set terminal wxt  enhanced title "Walt's steps " persist raise
plot "/home/walt/var/Pedometer" using 1:2 with linespoints

иначе, если необходимо предварительно обработать данные, с Bash Here Document (см. man bash):

#!/bin/bash
minval=0    # the result of some (omitted) calculation
maxval=4219   # ditto
gnuplot -persist <<-EOFMarker
    set title "Walt pedometer" font ",14" textcolor rgbcolor "royalblue"
    set timefmt "%y/%m/%d"
    set yrange $minval:$maxval
    set xdata time
    set pointsize 1
    set terminal wxt  enhanced title "Walt's steps " persist raise
    plot "/home/walt/var/Pedometer" using 1:2 with linespoints
EOFMarker
# rest of script, after gnuplot exits
15
ответ дан 23 November 2019 в 04:18

Как объяснено в man страницы , gnuplot ожидают вход от командного файла в том, что называют пакетный сеанс . Вы можете, например, писать строку plot sin(x) в файл myplot и затем выполняться gnuplot myplot.

при исключении командного файла поскольку сценарий делает, Вы доберетесь интерактивная сессия .

3
ответ дан 23 November 2019 в 04:18

Упомянутый метод здесь-документа очень полезен с Gnuplot и со многими другими программами также. При помощи переменных оболочки в Gnuplot управляет в здесь-документе, можно параметризовать графики с исходными данными из командной строки сценария оболочки. Путем уклончивой установки вещей можно выпускать серийно графики от обширных находок "больших данных". Я раньше производил последовательно выглядящие диаграммы рассеяния с 20 000 - 80 000 точек ГРАФИК PER в сотнях структурной динамики конечные аналитические выполнения, использующие точно этот метод. Это - очень мощный метод.

0
ответ дан 23 November 2019 в 04:18

Это могло бы помочь

{#set terminal postfile             
{#set output  "d1_plot.ps"        
set title "Energy vs. Time for Sample Data"    
set xlabel "Time"    
set ylabel "Energy"    
plot "d1.dat" with lines   
pause -1 "Hit Enter to continue"

щелкните здесь для получения дополнительной информации

0
ответ дан 23 November 2019 в 04:18

gnuplot myscript.sh -

Хитрость заключается в том, чтобы поставить тире '-' в конце командной строки.

Это оставит интерактивную команду gnuplot активной. Так что вы можете продолжать вставлять команду вручную.

Все после вашей команды выхода не будет оцениваться.

0
ответ дан 20 December 2020 в 18:08

Другие вопросы по тегам:

Похожие вопросы: