当前位置:首页> 正文

如何在命令行脚本完成之前阻止 MATLAB 返回?

如何在命令行脚本完成之前阻止 MATLAB 返回?

How can I stop MATLAB from returning until after a command-line script completes?

我在 MATLAB 帮助 (matlab -h) 中看到,我可以使用 -r 标志来指定要运行的 m 文件。我注意到当我这样做时,MATLAB 似乎启动了脚本,但立即返回。脚本处理正常,但主应用程序已经返回。

有没有办法让 MATLAB 只在命令完成后返回?如果您从单独的程序调用它,似乎等待进程比使用文件或套接字来确认完成更容易。

为了说明,这里有一个示例函数 waitHello.m:

1
2
3
4
5
function waitHello
    disp('Waiting...');
    pause(3); %pauses 3 seconds
    disp('Hello World');
    quit;

我尝试使用以下命令运行它:

1
matlab -nosplash -nodesktop -r waitHello

快速回答:

1
matlab -wait -nosplash -nodesktop -r waitHello

在 Matlab 7.1(我拥有的版本)中,matlab.bat 中有一个未记录的命令行选项 -wait。如果它不适用于您的版本,您可以添加它。这是我发现的。最终启动 matlab 的底部命令是(第 153 行):

1
start"MATLAB" %START_WAIT%"%MATLAB_BIN_DIR%\\%MATLAB_ARCH%\\matlab" %MATLAB_ARGS%

本例中启动命令的相关语法(见cmd.exe中的"帮助启动")为:

1
start ["window title"] [/wait] myprogram.exe args ...

在所有记录的命令行选项中,我发现(第 60 行)有点高:

1
2
3
) else if (%opt%) == (-wait) (
  set START_WAIT=/wait
) else (

所以指定 -wait 应该做你想做的事,只要你也从你的脚本中退出 matlab (否则它将等待你以交互方式终止它)。


展开全文阅读

相关内容