الرياضيات في دفعة واسطة من سطر الأوامر في نظام التشغيل Mac OS X

StackOverflow https://stackoverflow.com/questions/1604680

سؤال

أود أن أبدأ كتابة بعض وحدة الاختبارات بالنسبة لي الرياضيات برامج التحكم في كل شيء من سطر الأوامر مع بعض Makefiles.

يبدو أن الرياضيات يمكن تشغيلها من سطر الأوامر ولكن لا أستطيع أن أرى أي التعليمات الأساسية على الشروع في القيام بذلك على نظام التشغيل Mac OS X — هل فعلت هذا من قبل ؟


تحديث:

إنشاء ملف اختبار مثل هذا:

Print["hello"];
x := 1;
y = x+1;
z = y+1;
Print["y="ToString@y];
Print["z="ToString@z];
Quit[];

وتشغيله مع

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

هو الأقرب يمكنني الحصول على بعض نوع من تجهيز الدفعات.الإخراج تبدو قبيحة ، على الرغم ؛ أسطر يتم إضافة كل سطر من النص!

"hello"




"y=2"

"z=3"

هذا أقرب شيء يمكن أن نصل إلى السيناريو الذي لا يزال إخراج المعلومات إلى وحدة الإخراج ؟ أنا فقط باستخدام الرياضيات 6 ، ولكن آمل أن لا يحدث فرقا.

هل كانت مفيدة؟

المحلول

هذا, أخيرا, يعطي الإخراج مثل كنت تتوقع أن:

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

المنطقي, أعتقد.هذا إضافة إلى بلدي .bash_profile يسمح سهلة التنفيذ (كما في mma test.m):

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

انظر أيضا dreeves هو mash Perl, والتي قد توفر مزايا أكثر من هذا النهج.

نصائح أخرى

مع بعض التجارب وجدت أن /Applications/Mathematica.app/Contents/MacOS/MathKernel يمكن إطلاقها من سطر الأوامر.يبدو أنها لا تقبل المعتاد -h أو --help سطر الأوامر الأعلام ، على الرغم من.

بفضل Pillsy وسوف روبرتسون من أجل مزج المكونات!وهنا ذات الصلة ستاكوفيرفلوو السؤال: استدعاء الرياضيات البرنامج من سطر الأوامر, مع سطر الأوامر وسائط, stdin ، المعياري ، stderr

إذا كنت لا تستخدم الهريس ، قد تحتاج إلى استخدام الأداة التالية وظائف الهريس يعرف.على سبيل المثال معيار Print طباعة السلاسل مع علامات الاقتباس ليس عادة ما تريد في البرامج النصية.

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[]   *)
  Most@NestWhileList[f[]&, f[], test];       (*  returns while test is true.  *)
readList[] := doList[read, #=!=EOF&];        (* Slurp list'o'lines from stdin *)

استخدام الهريس على أن بيرل الملف ، mash.pl, ثم قم بإجراء اختبار.م كما يلي:

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

prn["hello"];
x := 1;
y = x+1;
z = y+1;
prn["y=", y];
prn["z=", z];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top