2011-01-06 12 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

+0

「コマンドラインスクリプトが完了するまでMatlabが戻るのを止めるにはどうすればよいですか?」という問題があります。 Windowsが別のコマンドウィンドウを開き、ターミナルをブロックせずにコマンドを実行する方法に関連しています。また、その問題の解決策であった-waitコマンドラインオプションの使用は、Windows以外のシステムには存在しません。 – papahabla

答えて

7

このrelated postに示されたとおり、あなたはコピーを作成する-logfileオプションを使用することができますすべての出力をファイルに出力します。 Windows

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

、MATLABが閉じるまでスクリプトの実行をブロックする-waitコマンドラインオプションを使用します。 Unix

、あなたはプロセスが終了するまで実行を一時停止するために5秒間スリープし、またはwaitコマンドを使用するsleep 5sを使用することができます。

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