Подтвердить что ты не робот

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

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

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

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

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

И я пытаюсь запустить это, используя:

matlab -nosplash -nodesktop -r waitHello
4b9b3361

Ответ 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%

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

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

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

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

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