Shell GNUPLOT:将数据管道化到GNUPLOT脚本的更好方法
我有这样一个gnuplot脚本(简化) 我要做的是通过shell脚本定义Shell GNUPLOT:将数据管道化到GNUPLOT脚本的更好方法,shell,gnuplot,Shell,Gnuplot,我有这样一个gnuplot脚本(简化) 我要做的是通过shell脚本定义ifilename(输入文件)和ifilename(输出文件) 因此,我认为-e命令可能正是用于该作业的命令 因此,对于脚本的gnuplot部分,我对此表示愤怒 gnuplot -e "ifilename='data/points_data1.dat'; ofilename='plot1'" chart.gp 但它抛出了错误 "chart.gp" line 8: undefined variable: ifilename
ifilename
(输入文件)和ifilename
(输出文件)
因此,我认为-e
命令可能正是用于该作业的命令
因此,对于脚本的gnuplot部分,我对此表示愤怒
gnuplot -e "ifilename='data/points_data1.dat'; ofilename='plot1'" chart.gp
但它抛出了错误
"chart.gp" line 8: undefined variable: ifilename
指的是这条线
filename = ifilename
我想这可能是因为它在解析两个=
符号时遇到了一些问题,所以我删除了这一行并像这样重写了我的shell脚本
gnuplot -e "filename='data/points_data1.dat'; ofilename='plot1'" chart.gp
#!/usr/bin/env gnuplot
reset session
set terminal pngcairo enhanced font "Times,25" size 800,400
...
./chart.gp > mypng.png
echo "data/points_data$i.dat" | gnuplot chart.gp > plot$i.png
但这次它抛出了以下错误
"chart.gp" line 8: undefined variable: filename
实际上起作用的是这个
echo "data/points_data$i.dat" | gnuplot chart.gp
其中,我将行filename=ifilename
替换为
FILE = system("read filename; echo $filename")
以及.gp
脚本中带有文件的文件名的每个实例
但我不确定如何使用该语法来定义输出文件
所以我想知道,有没有更好的方法将shell输入管道化到gnuplot脚本中
FILE = system("read filename; echo $filename")
事实上很好
如果您想通过管道将输出传输到某个文件,可以省略set output“something.png”
相反,您可以通过运行这样的脚本将.png
输出直接发送到stdout
gnuplot -e "filename='data/points_data1.dat'; ofilename='plot1'" chart.gp
#!/usr/bin/env gnuplot
reset session
set terminal pngcairo enhanced font "Times,25" size 800,400
...
./chart.gp > mypng.png
echo "data/points_data$i.dat" | gnuplot chart.gp > plot$i.png
然后,您可以将该输出通过管道传输到.png
文件,如下所示
gnuplot -e "filename='data/points_data1.dat'; ofilename='plot1'" chart.gp
#!/usr/bin/env gnuplot
reset session
set terminal pngcairo enhanced font "Times,25" size 800,400
...
./chart.gp > mypng.png
echo "data/points_data$i.dat" | gnuplot chart.gp > plot$i.png
所以最后的命令看起来像这样
gnuplot -e "filename='data/points_data1.dat'; ofilename='plot1'" chart.gp
#!/usr/bin/env gnuplot
reset session
set terminal pngcairo enhanced font "Times,25" size 800,400
...
./chart.gp > mypng.png
echo "data/points_data$i.dat" | gnuplot chart.gp > plot$i.png
你最初的命令几乎奏效了。调用
gnuplot -e "ifilename='data/points_data1.dat'; ofilename='plot1'" chart.gp
正确定义了输入和输出文件名。但随后您通过发出命令在chart.gp脚本中对它们进行了重击
reset session
这将清除所有变量定义,包括您特别需要的变量定义。从脚本中删除该行,您应该会没事的。如果“重置会话”命令的目的是确保未使用系统范围或专用初始化文件,则在命令行上将其替换为“-d”:
gnuplot -d -e "ifilename='data/points_data1.dat'; ofilename='plot1'" chart.gp