command-line - 脚本从 命令行 调用 Mathematica 程序,具有 命令行 参数,标准标准,stdout和标准

  显示原文与译文双语对照的内容
90 1

如果使用 Mathematica,可以使用 -noprompt 调用代码,并且使用 -initfile foo.m ( 或者 -run"<<foo.m" ),但是 命令行 参数可以使用,但是有一种方法可以在代码中使用某些 Mathematica 代码。


#!/usr/bin/env MathKernel


x = 2+2;


Print[x];


Print["There were", Length[ARGV]," args passed in on the command line."];


linesFromStdin = readList[];


etc.



然后 chmod 执行并运行它? 换句话说,如何使用 Mathematica 像其他脚本语言( Perl,python,ruby 等) 一样使用?

时间: 原作者:

96 1

这里有一个不需要额外 helper 脚本的解决方案。 你可以使用以下事件直接调用 Mathematica 内核:


#!/bin/sh


exec <"$0" || exit; read; read; exec/usr/local/bin/math -noprompt"$@" | sed '/^$/d'; exit


(* Mathematica code starts here *)


x = 2+2;


Print[x];



shebang代码跳过脚本的前两行,并将其余内容作为标准输入输入到 Mathematica 内核。 sed命令会删除内核产生的空行。

这个hack不像 MASH那样多。 因为 Mathematica 代码是从读取的,所以不能使用标准stdin输入用户输入,换句话说,。函数输入InputString 。

原作者:
...