我注意到我无法将--traditional
个选项与其他一个字母组合在一起,例如-i
等其他选项。
例如,当我将此作为我的八度.m文件中的第一行
#!/usr/bin/octave --traditional
然后它工作。 Octave启动正常并运行脚本。
但是当我尝试
时#!/usr/bin/octave --traditional --silent --norc --interactive
它不起作用。八度音程出错。不理解选项。
当我尝试
时#!/usr/bin/octave --traditional -qfi
也是错误。但是这个
#!/usr/bin/octave -qfi
作品。
问题是--traditional
没有像所有其他选项一样的单字母捷径。这是我看到的选项
Options:
--debug, -d Enter parser debugging mode.
--doc-cache-file FILE Use doc cache file FILE.
--echo-commands, -x Echo commands as they are executed.
--eval CODE Evaluate CODE. Exit when done unless --persist.
--exec-path PATH Set path for executing subprograms.
--help, -h, -? Print short help message and exit.
--image-path PATH Add PATH to head of image search path.
--info-file FILE Use top-level info file FILE.
--info-program PROGRAM Use PROGRAM for reading info files.
--interactive, -i Force interactive behavior.
--line-editing Force readline use for command-line editing.
--no-history, -H Don't save commands to the history list
--no-init-file Don't read the ~/.octaverc or .octaverc files.
--no-init-path Don't initialize function search path.
--no-line-editing Don't use readline for command-line editing.
--no-site-file Don't read the site-wide octaverc file.
--no-window-system Disable window system, including graphics.
--norc, -f Don't read any initialization files.
--path PATH, -p PATH Add PATH to head of function search path.
--persist Go interactive after --eval or reading from FILE.
--silent, -q Don't print message at startup.
--traditional Set variables for closer MATLAB compatibility.
--verbose, -V Enable verbose output in some cases.
--version, -v Print version number and exit.
我主要感兴趣的是运行与Matlab兼容的八度代码,所以我想使用这个--traditional
选项来确保我保持代码与Matlab兼容,以防我需要运行相同的代码在Matlab内部也是如此。
或者,一旦八度开始使用不同的命令,我可以“打开”这种兼容模式吗?
我在Linux上使用GNU Octave,版本3.2.4。
感谢
答案 0 :(得分:2)
我认为这本身并不是octave
问题。 Unix shebang表示法通常有些限制。我不知道我头顶的确切限制,但我很确定如果你为shebang线添加多个选项,很多实现都不满意,这似乎是你的问题。
使用包装器脚本可能是解决此类问题的规范方法。
为了解决短期和长期选项的组合问题,Unix惯例不允许这样做。如果可行,您可以考虑修补octave
为--traditional
添加简短选项。或者,我想有一种方法可以在用户或系统范围的Octave配置文件中指定传统行为,但如果您需要脚本在您无法控制的系统上工作,这可能没有用。