从八度CLI或八度GUI(如果我运行)
plot([1,2,3],[1,4,9])
它将显示一个绘图窗口,我可以查看并与之交互。但是,如果我用与内容相同的命令创建文件myPlot.m
plot([1,2,3],[1,4,9])
我用它运行
octave myPlot.m
然后我可以短暂地看到绘图窗口出现了不到一秒钟的时间,并立即关闭了它。如何防止此窗口自行关闭?
八度4.2.2 Ubuntu 18.04
答案 0 :(得分:2)
鉴于评论中的混乱之处,这里是一个完整的例子。
假设您创建了一个名为plotWithoutExiting.m
的脚本,该脚本旨在直接从linux shell调用,而不是从倍频程解释器内部调用:
#!/opt/octave-4.4.1/bin/octave
h = plot(1:10, 1:10);
waitfor(h)
disp('Now that Figure Object has been destroyed I can exit')
Linux中的第一行对应于“ shebang”语法;这个特殊注释告诉bash shell运行哪个解释器来执行以下脚本。我在这里使用了八度可执行文件的位置,您的可能位于其他位置。相应地适应。
然后我更改bash shell中的权限以使该文件可执行
chmod +x ./plotWithoutExiting.m
然后我可以通过运行它来运行文件:
./plotWithoutExiting.m
或者,您可以跳过“ shebang”和可执行文件的权限,并通过显式调用八度解释器来尝试运行此文件,例如:
octave ./plotWithoutExiting.m
甚至
octave --eval "plotWithoutExiting"
您还可以添加--no-gui
选项,以防止八度GUI突然弹出。
然后应运行以上脚本,将绘图捕获到图形对象句柄h
中。
waitfor(h)
然后暂停程序流程,直到图形对象被破坏(例如,通过手动关闭窗口)。
从理论上讲,如果您不希望收集图形句柄,则可以使用waitfor(gcf)
暂停执行,直到最后一个活动图形对象被破坏为止。
一旦发生这种情况,程序将继续正常运行直到退出。如果您不是在交互模式下运行八度音阶解释器,通常也会退出八度音阶环境(如果您不希望使用八度音阶解释器,则可以使用--persist
选项来防止这种情况)。
希望这会有所帮助。
答案 1 :(得分:1)
以@terminal身份运行(需要稍后退出八度)
八度--persist myscript.m
或追加
waitfor(gcf)
在脚本末尾以防止剧情结束