У меня есть такой скрипт gnuplot (упрощенный)
reset session
set terminal pngcairo enhanced font "Times,25" size 800,400
filename = ifilename
stats filename nooutput
N = STATS_columns
M = STATS_records
set angles degrees
set size square 1.25,1
set output ofilename
# does some stuff
...
...
...
set parametric
plot \
for [i=2:N] filename u (posX($0, column(i))):(posY($0, column(i))) w p ps 1.2 pt 7 lc rgb lcolor(i-2)
Что я хочу сделать, это определить ifilename
(входной файл) и ofilename
(выходной файл) через скрипт оболочки.
Так что я подумал, что команда -e
может быть просто для задания.
Так что для части скрипта gnuploat я написал это
gnuplot -e "ifilename='data/points_data1.dat'; ofilename='plot1'" chart.gp
, но этосгенерировал ошибку
"chart.gp" line 8: undefined variable: ifilename
, которая ссылается на эту строку
filename = ifilename
Я подумал, может быть, это из-за проблем с анализом двух знаков =
, поэтому я удалил эту строку и переписал свою оболочкускрипт, подобный этому
gnuplot -e "filename='data/points_data1.dat'; ofilename='plot1'" chart.gp
, но на этот раз он выдал следующую ошибку
"chart.gp" line 8: undefined variable: filename
Что на самом деле сработало, это
echo "data/points_data$i.dat" | gnuplot chart.gp
, где я заменилстрока filename = ifilename
с
FILE = system("read filename; echo $filename")
и каждым экземпляром filename
с FILE
в .gp
скрипте.
Но я не уверен, как использовать этот синтаксис дляопределите выходной файл.
Итак, мне было интересно, есть ли лучший способ ввода ввода оболочки в скрипт gnuplot?