2.6 可执行 Octave 程序

学习了 Octave 之后,您可能希望使用 #! 脚本机制编写自包含的 Octave 脚本。在 GNU 系统和许多 Unix 系统上都可以这样做1

当您需要编写一个用户无需知道程序是用 Octave 语言编写即可调用的程序时,自包含的 Octave 脚本非常有用。Octave 脚本也可用于数据文件的批处理。一旦在 Octave 的交互式环境中开发和测试了某个算法,就可以将其提交到一个可执行脚本中,并在新的数据文件上反复使用。

作为一个简单的可执行 Octave 脚本示例,您可以创建一个名为 hello 的文本文件,内容如下:

#! octave-interpreter-name -qf
# a sample Octave program
printf ("Hello, world!\n");

(其中 octave-interpreter-name 应替换为您的 Octave 二进制文件的完整路径和名称)。请注意,这仅在 #! 出现在文件的最开头时才有效。将该文件设置为可执行之后(在 Unix 系统上使用 chmod 命令),您只需在 shell 中键入:

hello

系统就会安排运行 Octave,效果如同您键入了:

octave hello

#! 开头的行列出了要运行的解释器的完整路径和文件名,以及传递给该解释器的可选初始命令行参数。然后,操作系统使用给定的参数以及所执行程序的完整参数列表来运行该解释器。参数列表中的第一个参数是 Octave 可执行文件的完整文件名。参数列表的其余部分可以是 Octave 的选项、数据文件,或两者兼有。-qf 选项通常在独立的 Octave 程序中指定,以防止它们打印正常的启动消息,并防止它们因特定用户的 ~/.octaverc 文件内容不同而表现出不同的行为。参见从命令行调用 Octave

请注意,某些操作系统可能会限制 #! 之后所能识别的字符数。此外,不同的 shell/系统对 #! 行中参数的分析方式也有所不同。大多数系统会将所有参数组合成一个字符串,并作为一个单独的参数传递给解释器。在这种情况下,以下脚本:

#! octave-interpreter-name -q -f # comment

相当于在命令行中键入:

octave "-q -f # comment"

这将产生一条错误消息。不幸的是,Octave 无法判断自己是从命令行被调用还是从一个 #! 脚本被调用,因此在使用 #! 机制时需要格外小心。


脚注

1.

#! 机制适用于源自伯克利 Unix、System V Release 4 以及部分 System V Release 3 的 Unix 系统。


版权所有 © 2024-2026 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2