Спасибо Пилли и Уиллу Робертсону за пробку MASH! Вот соответствующий вопрос StackOverflow: Вызовите программу Mathematica из командной строки с аргументами командной строки, stdin, stdout и stderr
Если вы не используете MASH, вы можете использовать следующие служебные функции, которые определяет MASH.
Например, стандартный 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, просто возьмите этот файл perl, mash.pl , а затем сделайте свой test.m следующим образом:
#!/usr/bin/env /path/to/mash.pl
prn["hello"];
x := 1;
y = x+1;
z = y+1;
prn["y=", y];
prn["z=", z];