2009-10-22 40 views
6

'daki komut satırından toplu iş modunda Mathematica programlarım için bazı birim testleri yazmaya başlamak ve komut satırından bazı Makefiles'lerle her şeyi kontrol etmek istiyorum.Mathematica, Mac OS X

Mathematica can be run from the command line gibi görünüyor, ancak Mac OS X'te bunu yapmaya başlama konusunda herhangi bir temel talimat göremiyorum - bunu daha önce kim yaptı?


Güncelleme:

böyle bir test dosyası oluşturma:

 
Print["hello"]; 
x := 1; 
y = x+1; 
z = y+1; 
Print["y="[email protected]]; 
Print["z="[email protected]]; 
Quit[]; 

Ve

/Applications/Mathematica.app/Contents/MacOS/MathKernel -noprompt < test.m 

ile çalışan ben çeşit olsun en yakın olan toplu işlem. Ancak çıktı çirkin görünüyor; komut dosyasının her satırı için yeni satırlar eklendi!

 

"hello" 




"y=2" 

"z=3" 

Bu, hala konsol çıktısına bilgi verebilen bir komut dosyasına ulaşabileceğim en yakın şey mi? Sadece Mathematica 6 kullanıyorum ama umarım bu bir fark yaratmaz.

+0

Eğer püre baktınız mı:

ARGV = args = Drop[$CommandLine, 4]; (* Command line args. *) pr = WriteString["stdout", ##]&; (* More *) prn = pr[##, "\n"]&; (* convenient *) perr = WriteString["stderr", ##]&; (* print *) perrn = perr[##, "\n"]&; (* statements. *) EOF = EndOfFile; (* I wish mathematica *) eval = ToExpression; (* weren't so damn *) re = RegularExpression; (* verbose! *) read[] := InputString[""]; (* Grab a line from stdin. *) doList[f_, test_] := (* Accumulate list of what f[] *) [email protected][f[]&, f[], test]; (* returns while test is true. *) readList[] := doList[read, #=!=EOF&]; (* Slurp list'o'lines from stdin *) 

aşağıdaki gibi test.m yapmak sonra sadece o perl dosyasını mash.pl kapmak, MASH kullanın ve belirleyin. umich.edu/people/dreeves/mash/? – Pillsy

cevap

3

Bu, son olarak, çıktıyı verir:

/Applications/Mathematica.app/Contents/MacOS/MathKernel -noprompt -run "<<test.m" 

mantıklı, herhalde. benim .bash_profile bu ekleme (mma test.m olduğu gibi) kolay yürütülmesine izin verir:

mma() { /Applications/Mathematica.app/Contents/MacOS/MathKernel -noprompt -run "<<$1" ; } 

Bu yaklaşımın göre avantaj sağlayabilir, hangi zamanda dreeves's mash Perl komut bakınız.

2

Bazı denemelerle, /Applications/Mathematica.app/Contents/MacOS/MathKernel komut satırından başlatılabileceğini buldum. Yine de, olağan -h veya --help komut satırı bayraklarını kabul etmiyor gibi görünüyor. Ben bunu beklediğiniz gibi

0

MASH fişi için Pillsy ve Will Robertson'a teşekkürler! İşte ilgili StackOverflow sorusu: Call a Mathematica program from the command line, with command-line args, stdin, stdout, and stderr MASH kullanmıyorsanız, MASH'ın tanımladığı aşağıdaki yardımcı program işlevlerini kullanmak isteyebilirsiniz. Örneğin, standart Baskı dizeleri tırnak işareti ile basacaktır - genellikle komut dosyalarında istediğinizi değil. http: //ai.eecs

#!/usr/bin/env /path/to/mash.pl 

prn["hello"]; 
x := 1; 
y = x+1; 
z = y+1; 
prn["y=", y]; 
prn["z=", z];