2011-01-06 63 views
11

我试图从命令行运行MATLAB脚本,并且遇到了让MATLAB将结果返回给stdout的问题。如何从命令行调用MATLAB并在退出之前打印到stdout

运行以下命令时,MATLAB打印许可证标题并退出而不打印消息。

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

*注:我目前正在运行的版本7.10.0.499(R2010a版本)64位(maci64)

+1

无法返回,直到后的[我怎样才能阻止MATLAB可能重复命令行脚本完成?](http://stackoverflow.com/questions/14495/how-can-i-stop-matlab-from-returning-until-after-a-command-line-script-completes) – gnovice 2011-01-06 02:55:24

+0

'如何阻止Matlab返回到命令行脚本完成之后?'与Windows如何打开单独的命令窗口来执行命令而不会阻止终端相关。此外,在非Windows系统上不存在使用作为该问题的解决方案的-wait命令行选项。 – papahabla 2011-01-06 19:05:07

回答

7

正如在这个related post所示,您可以使用-logfile选项进行复印的所有输出到一个文件。

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

Windows,使用-wait命令行选项,直到MATLAB关闭,以阻止脚本的执行。

Unix,您可以使用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