Я вижу в справке 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%
Соответствующий синтаксис команды запуска (см. «Запуск справки» в cmd.exe) в этом случае:
start ["window title"] [/wait] myprogram.exe args ...
Чуть выше среди всех задокументированных параметров командной строки я обнаружил (строка 60):
) else if (%opt%) == (-wait) (
set START_WAIT=/wait
) else (
Поэтому указание -wait должно делать то, что вы хотите, если вы также выходите из Matlab из своего скрипта (в противном случае он будет ждать, пока вы его завершите в интерактивном режиме).
@ Snickers3192 см. мой ответ здесь для Unix-эквивалента флага -wait (с использованием команды оболочки wait)
Этой опции нет в Linux, знаете ли вы, как я могу добиться того же?