这里是一个完整的示例,考虑到评论中的混淆。
假设您创建了一个名为plotWithoutExiting.m
的脚本,旨在直接从Linux shell调用,而不是在Octave解释器内部调用:
#!/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运行哪个解释器来执行下面的脚本。我在这里使用了我的Octave可执行文件的位置,你的位置可能不同,需要相应地进行调整。
然后,我在Bash shell中更改权限,使该文件可执行。
chmod +x ./plotWithoutExiting.m
那么我可以通过运行该文件来运行它:
./plotWithoutExiting.m
或者,您可以跳过"shebang"和可执行权限,尝试通过显式调用Octave解释器来运行此文件,例如:
octave ./plotWithoutExiting.m
甚至更多
octave --eval "plotWithoutExiting"
如果需要的话,您还可以添加--no-gui
选项,以防Octave GUI短暂弹出。
然后,上述脚本应该运行,并捕获绘图到一个图形对象句柄h
中。
waitfor(h)
将暂停程序流程,直到图形对象被销毁(例如通过手动关闭窗口)。
理论上,如果您不关心收集图形句柄,只需使用waitfor(gcf)
来暂停执行,直到销毁最后一个活动的图形对象。
一旦发生这种情况,程序会正常继续运行,直到退出。如果您没有以交互模式运行Octave解释器,则通常也会退出Octave环境(如果这不是您想要的,请使用--persist
选项防止此情况发生)。
希望这可以帮助您。
waitfor
命令。这将等待直到绘图关闭,如果它是脚本中的最后一个命令,则会适当地退出Octave。 - Tasos Papastylianouwaitfor(h)
中,你从哪里获取h
? - Gael Lorieul