如何从octave中的列表中安装大量软件包?

如何从octave中的列表中安装大量软件包?,octave,packages,Octave,Packages,我想以自动化的方式安装一些软件包,我尝试使用一个简单的for循环来实现这一点。如下图所示 pkgs = '../pkgs'; names = dir(fullfile(pkgs, '*.tar.gz')); n = numel(nomes); for i = 1:n pkg install names(n).name end 这是我这8次的第一次尝试 warning: file names(n).name does not exist 我正在寻

我想以自动化的方式安装一些软件包,我尝试使用一个简单的for循环来实现这一点。如下图所示

   pkgs = '../pkgs';
   names = dir(fullfile(pkgs, '*.tar.gz')); 
   n = numel(nomes);
   for i = 1:n
        pkg install names(n).name
   end
这是我这8次的第一次尝试

warning: file names(n).name does not exist

我正在寻找一种方法来获取names.name的
ans
值。

MATLAB和Octave都允许

functionname arg1 arg2 ...
通过将其转换为适当的函数调用

functionname('arg1','arg2',...);
这意味着,为了将变量的值作为参数传递(而不是变量名本身),必须使用函数形式:

pkgs = '../pkgs';
names = dir(fullfile(pkgs, '*.tar.gz')); 
n = numel(names);                    %// fixed your typo here
for k = 1:n
     pkg('install',names(k).name)    %// changed here, also n -> i -> k
end

请注意,您有两种输入错误:
names
在第3行(可能是翻译问题)中被写成
nomes
,更重要的是,您在循环中使用的是
n
,而不是
i
。事实上,不要使用
i
作为八度音阶的变量:它代表假想单位,如果不谨慎,可能会导致细微的错误。在上面的代码中,我改为
k

MATLAB和Octave都允许

functionname arg1 arg2 ...
通过将其转换为适当的函数调用

functionname('arg1','arg2',...);
这意味着,为了将变量的值作为参数传递(而不是变量名本身),必须使用函数形式:

pkgs = '../pkgs';
names = dir(fullfile(pkgs, '*.tar.gz')); 
n = numel(names);                    %// fixed your typo here
for k = 1:n
     pkg('install',names(k).name)    %// changed here, also n -> i -> k
end

请注意,您有两种输入错误:
names
在第3行(可能是翻译问题)中被写成
nomes
,更重要的是,您在循环中使用的是
n
,而不是
i
。事实上,不要使用
i
作为八度音阶的变量:它代表假想单位,如果不谨慎,可能会导致细微的错误。在上面的代码中,我改为
k

您可以使用“glob()”获取tarball列表,然后调用一个
pkg()
来安装所有tarball。像这样:

fpaths = glob ("pkgs/*.tar.gz");
pkg ("install", fpaths{:});

您可以使用“glob()”来获取tarball列表,然后通过一个
pkg()
调用来安装所有tarball,而不是所有这些代码。像这样:

fpaths = glob ("pkgs/*.tar.gz");
pkg ("install", fpaths{:});

谢谢!这很有效。我真的忘了翻译一些单词。或者你可以用所有人的名字打一个电话到
pkg
packages@DarleisonRodrigues事实上,我建议接受Carandraugh的回答,因为这是正确的方法。非常感谢!这很有效。我真的忘了翻译一些单词。或者你可以用所有人的名字打一个电话到
pkg
packages@DarleisonRodrigues事实上,我建议接受Carandraugh的答案,因为这是正确的方法。顺便说一句,许多包都有依赖性,例如signal依赖于控件,所以如果您只安装*.tar.gzYes,很可能会遇到问题,那么确实有必要对软件包列表进行一些“排序”。顺便说一句,许多软件包都有依赖性,例如signal依赖于控件,所以如果您只安装*.tar.gzYes,很可能会遇到问题,然后真的有必要对包裹列表进行一些“排序”。