Как я могу остановить возврат MATLAB до завершения сценария командной строки?

В справке MATLAB ( 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
18.08.2008 12:10:38
1 ОТВЕТ
РЕШЕНИЕ

Быстрый ответ:

matlab -wait -nosplash -nodesktop -r waitHello

В Matlab 7.1 (у меня есть версия) есть недокументированный параметр командной строки -wait в matlab.bat. Если это не работает для вашей версии, вы, вероятно, можете добавить ее. Вот что я нашел. Команда внизу, которая, наконец, запускает Matlab: (строка 153):

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

Соответствующий синтаксис команды запуска (см. «Help start» в cmd.exe) в этом случае:

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

Чуть выше, среди всех задокументированных опций командной строки, я обнаружил (строка 60):

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

Поэтому указание -wait должно делать то, что вы хотите, до тех пор, пока вы также выходите из MATLAB из вашего скрипта (в противном случае он будет ждать, пока вы завершите его в интерактивном режиме).

24
18.08.2008 15:16:55
Эта опция отсутствует в Linux, вы знаете, как я мог добиться того же?
Snickers3192 10.09.2015 15:39:30
@ Snickers3192 см. Мой ответ здесь для Unix-эквивалента -waitфлага (с помощью команды waitshell)
Amro 22.08.2017 12:33:17