Mathematica 脚本模式

                     

贡献者: graviton

  • 本文处于草稿阶段。
  • 本文存在未完成的内容。

1. 命令行二进制程序

   Mathematica 有个命令行解释程序 wolframscript,可以用来运行用 Wolfram 语言编写的脚本。 可以使用 bash 命令查看:

file -L $(which wolframscript)
wolframscript --help #查看使用帮助

2. 命令行选项

   wolframscript --help 的输出如下:

辅助功能

运行模式

运行选项

3. Wolfram 内部预定义变量

常用调用方式

   建立后缀名为 .wl or .wls 的文件,然后按平常写 Mathematica 笔记本的语法编写脚本。 但最好用 字符串函数 代替 Box 相关的函数,如 TableForm。 运行时,用 wolframscript 唤起脚本(如 windows 为 wolframscript.exe)。

   假如当前目录下有脚本 test.wl,用类似下面的方式运行:

wolframscript -script test.wl \
--Lbd-num '0.90' --Lbd-fit '0.90'  --ord '\$ord0'

   其中 --Lbd-num '0.90' --Lbd-fit '0.90' --ord '\$ord0' 将作为参数提供给脚本 test.wl,可在脚本内部使用。 注意 $ScriptCommandLine 中的参数,其类型均为 String。 也就是命令行接收到的 参数,会被强制转码为 字符串。 所以上面收到的参数列表为:

{"./test.wl","--Lbd-num","0.90","--Lbd-fit","0.90","--ord","$ord0"}
如果需要使用 数字 或其他类型的 ,需要在脚本内部自行转换(ToExpression)。

   此外,如果命令行参数中包含 $,需要用 单引号 + 反斜杠 转义(escape)。 例如 $ord -> '\$ord0'

   在 WolframScript 开始执行时,会预定义一些变量。 因此在脚本内部,可以从这些 预设变量 读取 shell 中提供的参数。

   在上面的例子中,三个变量被填充如下,不同平台可能稍有不同

$CommandLine->{/usr/local/Wolfram/Mathematica/12.2/
SystemFiles/Kernel/Binaries/Linux-x86-64/WolframKernel,
-wlbanner,-script,test.wl,--,test.wl,
--Lbd-num,0.90,--Lbd-fit,0.90,--ord,$ord0}

$ScriptCommandLine->{test.wl,--Lbd-num,0.90,--Lbd-fit,0.90,--ord,ord0}

$ScriptInputString->None

   也可用 wolfram 命令运行脚本,但是 wolfram 不会设置 $ScriptCommandLine,只会填充 $CommandLine:

wolfram -script test.wl  --Lbd-num '0.90' --Lbd-fit '0.90'  --ord '\$ord0'

Unix 平台

   Unix 还可以加上 Shebang 行。即在脚本文件首行添加

#!/usr/bin/env wolframscript [其他选项]

   运行的时候,不需要先输入 wolframscript,传递参数的方法和上面相同。

./test.wl para1 para2
# 或者
wolframscript -script ./init.wl &>\
~/test/log.txt & # 在后台运行,把输出重定向到日志文件 log.txt

   下面是一些经常用到的 MMA 系统变量:


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利