如何从命令行调用MATLAB并在退出前将内容打印到标准输出

11

我试图从命令行运行MATLAB脚本,并且在让MATLAB返回结果到stdout方面遇到了问题。

当运行下面的命令时,MATLAB会打印许可证广告并退出而不打印消息。

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

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


1
可能是如何让MATLAB在命令行脚本完成后才返回?的重复问题。 - gnovice
“如何让Matlab在命令行脚本执行完成后再返回?”这个问题与Windows如何打开单独的命令窗口来执行命令而不阻塞终端有关。此外,解决该问题的-wait命令行选项在非Windows系统上不存在。 - papahabla
1个回答

8
相关博客中所示,您可以使用-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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接