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

StackOverflow https://stackoverflow.com/questions/14495

  •  08-06-2019
  •  | 
  •  

Вопрос

Я вижу в справке MATLAB (matlab -h) что я могу использовать -r установите флажок, чтобы указать m-файл для запуска.Я замечаю, что когда я делаю это, MATLAB, кажется, запускает скрипт, но сразу же возвращается.Скрипт обрабатывается нормально, но основное приложение уже вернулось.

Есть ли какой-нибудь способ заставить MATLAB возвращаться только после завершения выполнения команды?Если вы вызываете его из отдельной программы, кажется, что проще дождаться завершения процесса, чем использовать файл или сокеты для подтверждения завершения.

Чтобы проиллюстрировать это, вот пример функции waitHello.m:

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

И я пытаюсь запустить это с помощью:

matlab -nosplash -nodesktop -r waitHello
Это было полезно?

Решение

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

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%

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

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

Немного выше, среди всех документированных параметров командной строки, я нашел (строка 60):

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top