2011-01-06 9 views
11

Estoy intentando ejecutar scripts de MATLAB desde la línea de comandos y tengo problemas para que MATLAB devuelva los resultados a stdout.Cómo llamar a MATLAB desde la línea de comandos e imprimir a stdout antes de salir de

Al ejecutar el siguiente comando, MATLAB imprime el letrero de la licencia y sale sin imprimir el mensaje.

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

* Nota: Actualmente estoy ejecutando la versión 7.10.0.499 (R2010a) de 64 bits (maci64)

+1

posible duplicado de [¿Cómo puedo detener MATLAB regresar hasta después de una El guión de la línea de comandos se completa?] (http://stackoverflow.com/questions/14495/how-can-i-stop-matlab-from-returning-until-after-a-command-line-script-completes) – gnovice

+0

problema con '¿Cómo puedo evitar que Matlab vuelva hasta que se complete un script de línea de comandos?' se relaciona con la forma en que Windows abre una ventana de comandos separada para ejecutar comandos sin bloquear la terminal. Además, el uso de la opción de línea de comandos -wait, que era la solución a ese problema, no existe en sistemas que no sean de Windows. – papahabla

Respuesta

7

como se demostró en este related post, puede utilizar la opción -logfile para hacer una copia de todas las salidas a un archivo.

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

En Windows, utilice las -wait opciones de línea de comandos para bloquear la ejecución de la secuencia de comandos de MATLAB hasta que se cierra.

En Unix, puede utilizar sleep 5s a dormir durante 5 segundos, o utilice el comando wait para detener la ejecución hasta que el proceso termine:

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