Jak Mogę zatrzymać MATLAB od powrotu, dopóki skrypt wiersza poleceń nie zostanie ukończony?

Widzę w MATLAB help (matlab -h), że mogę użyć znacznika -r, aby określić plik m do uruchomienia. Zauważyłem, że kiedy to robię, MATLAB wydaje się uruchamiać skrypt, ale natychmiast powraca. Skrypt przetwarza dobrze, ale główna aplikacja już wróciła.

Czy jest jakiś sposób, aby MATLAB wrócił tylko po zakończeniu polecenia? Jeśli wywołujesz go z oddzielnego programu, wydaje się, że łatwiej jest poczekać na proces niż użyć pliku lub gniazd do potwierdzenia zakończenie.

Aby zilustrować, oto przykładowa Funkcja waitHello.m:

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

I staram się to uruchomić używając:

matlab -nosplash -nodesktop -r waitHello
Author: Yamaneko, 2008-08-18

1 answers

Szybka odpowiedź:

matlab -wait -nosplash -nodesktop -r waitHello

W Matlabie 7.1 (wersja, którą mam) jest nieudokumentowana opcja wiersza poleceń-poczekaj w Matlabie.bat. Jeśli to nie działa dla twojej wersji, prawdopodobnie możesz ją dodać. Oto co znalazłem. Polecenie na dole, które ostatecznie uruchamia matlab, to (linia 153):

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

Odpowiednia składnia polecenia start (patrz" help start " w cmd.exe) w tym przypadku jest:

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

Nieco wyżej, wśród wszystkich udokumentowanych opcji wiersza poleceń znalazłem "linia 60": {]}

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

Więc określenie-wait powinno robić to, co chcesz, tak długo, jak również opuszczasz matlab ze skryptu(w przeciwnym razie będzie czekać, aż zakończysz go interaktywnie).

 24
Author: Brian Jorgensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 15:16:55