我有一个调用gnu绘图脚本的bash脚本:
#!/bin/bash
rm plot.dat
writedata() {
for i in {1..10}; do
cat << EOF > plot.dat
$i #there is more here but it doesn't matter
EOF
sleep 1
done
}
writedata &
sleep 1
gnuplot -persist liveplot.gnu
这是liveplot.gnu:
ext = 0
bind all q 'ext = 1'
load 'loop.gnu'
这里是loop.gnu
while(!ext) {
set xrange [0:6]
set yrange [0:6]
set cbrange [0:10]
unset key
set palette defined (0 0 0 0.5, 1 0 0 1, 2 0 0.5 1, 3 0 1 1, 4 0.5 1 0.5, 5 1 1 0, 6 1 0.5 0, 7 1 0 0, 8 0.5 0 0)
set view map
set pm3d interpolate 15,15
splot "plot.dat" matrix with pm3d
pause 1
}
但是,它不能按预期工作。我需要的是循环继续,直到用户按下“q”按钮。但这种方式它永远运行,我需要杀死bash脚本来停止循环。 如果我打电话
bind q
它告诉我
q * `ext = 1'
这似乎对我来说。但是,如果我打印ext,它总是为0。
我需要在这里更改什么?我尝试了其他各种方法来重读等等,但无法让它发挥作用。
谢谢!