【问题标题】:Run script file from other script file in Octave从 Octave 中的其他脚本文件运行脚本文件
【发布时间】:2016-12-03 11:53:00
【问题描述】:

我有几个运行测试的 Octave 脚本文件,命名为 test_1、test_2 等。我想要一个脚本文件来运行所有测试,而不必将所有 test_n 文件切换到函数文件。我已经尝试了几种变体:

#!/path/to/octave -q
addpath('/path/to/directory/containing/all/scripts/');

source(test_1.m);

source(test_2.m);

但我总是收到“错误:对脚本/path/to/directory/包含/all/scripts/test_1.m 的无效调用”。

(我已经尝试过 source_file()、run(),并且只使用文件名就行了。)

有没有办法在 Octave 中从脚本文件运行脚本文件?

【问题讨论】:

    标签: matlab octave executable


    【解决方案1】:

    试试

    source test_1.m
    

    source('test_1.m')
    

    改为。

    您的语法暗示 test_1 是一个结构变量,您正在尝试访问一个名为 m 的字段

    run 命令相同(实际上,run 只是在底层调用source)。

    如果脚本在路径上,您也可以直接调用它。您只需确保不包含 .m 扩展名,即

    test_1
    test_2
    

    【讨论】:

    • 为了理解您遇到的错误:Octave 告诉您“好的,路径中有一个文件 'testo.m',这意味着有一个名为 testo 的脚本/函数可用供我使用。但我不知道你为什么要告诉我从中访问成员 .m。这不是调用脚本或函数的方法!他们甚至没有成员!”
    • 顺便说一句。如果您希望您的代码也与 matlab 兼容,请避免使用 source 方法,因为这是特定于八度的。 run 和直接调用脚本(如果在路径上)都可以。
    【解决方案2】:

    只需将包含的脚本的名称放在单独的行上,不带 .m 扩展名。

    让我们以脚本 1 为例:'enclosed.m' 和脚本 2:'included.m'。然后封闭的.m 应该是这样的:

    % begin enclosed.m
    included;      % sources included.m
    % end encluded.m
    

    【讨论】:

      猜你喜欢
      • 2014-07-29
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      相关资源
      最近更新 更多