How to execute commands in gnuplot using shell script?
One way is with -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
another way, if you need to preprocess data, is with a Bash Here Document
(see 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
From man gnuplot
or its online manpage:
-p, --persist lets plot windows survive after main gnuplot program
exits.
-e "command list" executes the requested commands before loading the
next input file.
So what you probably want to run is the following command:
gnuplot -e "plot sin(x); pause -1"
Other variants I proposed but which are not that useful were:
gnuplot -p -e "plot sin(x); pause -1"
gnuplot -e "plot sin(x)"
gnuplot -p -e "plot sin(x)"
As explained in the man
pages, gnuplot
expects input from a command file in what is called an batch session. You can e.g. write the line plot sin(x)
to a file myplot
and then execute gnuplot myplot
.
If you omit the command file, as your script does, you will get an interactive session.