2011-01-06 12 views
11

MATLAB komut dosyalarını komut satırından çalıştırmaya çalışıyorum ve MATLAB uygulamasının sonuçları stdout'a döndürmesinde sorun yaşıyorum.Komut satırından MATLAB'ı çağırmak ve çıkmadan önce stdout'a yazdırma

Aşağıdaki komutu çalıştırırken MATLAB, lisans işaretini yazdırır ve iletiyi yazdırmadan çıkar.

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

* Not: Şu anda Sürüm 7.10.0.499 (R2010a) 64 bit (maci64)

+1

bir sonrasına kadar döndürmesini MATLAB nasıl durdurabilirim [olası yinelenen komut satırı komut dosyası tamamlandı?] (http://stackoverflow.com/questions/14495/how-can-i-stop-matlab-from-returning-until-after-a-command-line-script-completes) – gnovice

+0

'Komut satırı komut dosyası tamamlandıktan sonra Matlab'ın geri dönmesini nasıl engelleyebilirim?' Windows'un, terminali engellemeden komutları yürütmek için ayrı bir komut penceresi açmasıyla ilgilidir. Ayrıca, Windows dışı sistemlerde bu soruna çözüm olan -wait komut satırı seçeneğinin kullanılması da mevcut değildir. – papahabla

cevap

7

olarak bu related post gösterildi çalıştırıyorum, bir kopyasını yapmak için -logfile seçeneğini kullanabilirsiniz tüm çıktıların bir dosyaya. Windows günü

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

, MATLAB kapatana kadar Senaryonuzun yürütülmesini engellemek için -wait komut satırı seçeneklerini kullanabilirsiniz. Unix günü

, sen süreç bitene kadar duraklatılamadı 5 saniye uyku veya wait komutunu kullanmak sleep 5s kullanabilirsiniz:

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