str*_*ser 2 bash gnuplot computation
我在bash上做一些脚本用gnuplot绘制数据.但它不起作用.
我有一个程序将数据抛出到命令行.我在文件上收集数据,然后我循环这个过程以获得所需的结果.说我有这个脚本
N = 10
./program.exe > data_$N.dat # Creating the data to be plotted
for ((i = 0 ; i<1 ; i++)) do # Dummy loop to throw all together to gnuplot
echo "set size square"
echo "set xrange[-$N-1:$N+1]; set yrange[-$N-1:$N+1];"
echo "plot '-' using 1:2"
for((j = 0 ; j <= 9 ; j++)) do
# Throwing the data to gnuplot
echo "cat data_$N.dat"
# Updating the file and overwriting on it
echo "cat data_$N.dat | xargs ./program.exe > data_$N.dat" | bash
echo "e"
echo "pause 0.5"
done
done | gnuplot -persist # Throwing the formatted data to gnuplot
Run Code Online (Sandbox Code Playgroud)
所以,基本上我将格式化文本从文件中抛出到gnuplot,更改其内容,但不更改文件名.
当然,我不想改变文件的名字,因为我做出相应的与该文件该步骤的计算,然后我用覆盖更新的数据文件.一种缓冲.计算流程将是
./program.exe > data.dat # Making the initial data
begin gnuplot loop
throw data to gnuplot
"cat data.dat | xargs ./program.exe > data.dat" # update data overwriting file
end gnuplot loop
pipe all the script to gnuplot
Run Code Online (Sandbox Code Playgroud)
希望很明确,你可以帮助我:).谢谢!
PD.我是一名物理学家.
重定向>
由shell完成.因此,执行时发生的第一件事cat data_$N.dat | xargs ./program.exe > data_$N.dat
是shell打开data_$N.dat
写入并截断它.现在它是空的,所以当cat
它启动时它找到一个文件,但它已经被截断了.
只需将您的输出重定向到一个临时位置(通常用于$$
返回您的PID,因此您的脚本有点独立).所以... > tmp_$$.dat
,然后就可以了mv -f tmp_$$.dat data_$N.dat
.
归档时间: |
|
查看次数: |
214 次 |
最近记录: |