我在MATLAB help(matlab -h
)中看到我可以使用该-r
标志来指定m
要运行的-file.我注意到,当我这样做时,MATLAB似乎启动了脚本,但立即返回.脚本处理正常,但主应用程序已经返回.
有没有办法让MATLAB只在命令完成后返回?如果你从一个单独的程序中调用它,似乎等待进程比使用文件或套接字确认完成更容易.
为了说明,这是一个示例函数waitHello.m
:
function waitHello disp('Waiting...'); pause(3); %pauses 3 seconds disp('Hello World'); quit;
我尝试使用以下方式运行:
matlab -nosplash -nodesktop -r waitHello
Brian Jorgen.. 24
快速回答:
matlab -wait -nosplash -nodesktop -r waitHello
在Matlab 7.1(我的版本)中,matlab.bat中有一个未记录的命令行选项-wait.如果它不适用于您的版本,您可以添加它.这是我找到的.最后启动matlab的底部命令是(第153行):
start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%
在这种情况下,start命令的相关语法(请参阅cmd.exe中的"help start")是:
start ["window title"] [/wait] myprogram.exe args ...
在所有记录的命令行选项中,我发现(第60行):
) else if (%opt%) == (-wait) ( set START_WAIT=/wait ) else (
所以指定-wait应该做你想要的,只要你也从你的脚本中退出matlab(否则它将等待你以交互方式终止它).
快速回答:
matlab -wait -nosplash -nodesktop -r waitHello
在Matlab 7.1(我的版本)中,matlab.bat中有一个未记录的命令行选项-wait.如果它不适用于您的版本,您可以添加它.这是我找到的.最后启动matlab的底部命令是(第153行):
start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS%
在这种情况下,start命令的相关语法(请参阅cmd.exe中的"help start")是:
start ["window title"] [/wait] myprogram.exe args ...
在所有记录的命令行选项中,我发现(第60行):
) else if (%opt%) == (-wait) ( set START_WAIT=/wait ) else (
所以指定-wait应该做你想要的,只要你也从你的脚本中退出matlab(否则它将等待你以交互方式终止它).