Команда приостановить выполнение до завершения процесса:

аюсь запустить сценарии MATLAB из командной строки, и у меня возникают проблемы с получением MATLAB для возврата результатов в стандартный вывод.

При выполнении следующей команды MATLAB печатает баннер лицензии и выходит без печати сообщения.

matlab -nodisplay -nojvm -r "fprintf(1, 'value: %f\n', 2.0); quit;"

* примечание: в настоящее время я использую 64-разрядную версию 7.10.0.499 (R2010a) (maci64)

 papahabla06 янв. 2011 г., 20:05
Проблема с «Как я могу остановить возврат Matlab до завершения сценария командной строки?» связано с тем, как Windows открывает отдельное командное окно для выполнения команд без блокировки терминала. Кроме того, использование параметра командной строки -wait, который был решением этой проблемы, не существует в системах, отличных от Windows.

Ответы на вопрос(1)

Как было показано в этомсвязанный пост, вы можете использовать-logfile возможность сделать копию всех выводов в файл.

matlab -nodisplay -nojvm -logfile out.txt -r "fprintf(1, 'value: %f\n', 2.0); quit;"

НаWindows, использовать-wait параметры командной строки, чтобы заблокировать выполнение вашего скрипта, пока MATLAB не закроется.

НаЮникс, вы можете использоватьsleep 5s спать в течение 5 секунд, или использоватьwait Команда приостановить выполнение до завершения процесса:

#!/bin/sh
matlab -nodisplay -logfile out.txt -r "rand(3), quit"
wait $(ps | grep matlab | awk '{print $2}') && cat out.txt

Ваш ответ на вопрос