2012-01-13 23 views
1

所以我正在使用Octave脚本(我对该语言相对缺乏经验),并且我试图打开两个csv文件,这些文件是我传递给脚本的名称作为命令行参数。这里是我的脚本:Octave拒绝处理我传递给csvread()的字符串

#!/usr/bin/env octave 

    function plotregs(fig, regs) 
     figure(fig); 
     title('Foo'); 
     xlabel('Value'); 
     ylabel('Cycle #'); 
     grid on; 

     plot(rows(regs(:, 1)), regs(:, 1), 
      rows(regs(:, 2)), regs(:, 2), 
      rows(regs(:, 3)), regs(:, 3), 
      rows(regs(:, 4)), regs(:, 4), 
      rows(regs(:, 5)), regs(:, 5), 
      rows(regs(:, 6)), regs(:, 6), 
      rows(regs(:, 7)), regs(:, 7), 
      rows(regs(:, 8)), regs(:, 8)); 

     legend('A', 'B', 'C', 'D', 'E', 'F', 'H', 'L'); 
    endfunction 

    args = argv(); 
    filename = strcat(cellstr(args(1))); 
    typeinfo filename 
    regs = csvread(filename); 

    graphics_toolkit("gnuplot"); 

    plotregs(1, regs); 

    filename = strcat(cellstr(args(2))); 
    regs = csvread(filename); 

    plotregs(2, regs); 

    pause 

这里是输出我得到当我运行该脚本:

ans = sq_string 
    error: dlmread: FILE argument must be a string or file id 
    error: called from: 
    error: /usr/share/octave/3.4.3/m/io/csvread.m at line 34, column 5 
    error: /home/tnecniv/Code/Octave/regigraph/regigraph.m at line 25, column 6 

任何意见,将不胜感激

回答

3

的问题是,你创建一个可执行八度期望参数但不提供任何参数的脚本。

首先我会启动文件

#!/usr/bin/octave -qf 

那么可以运行该脚本

$ ./myscript.sh datafile1.csv datafile2.csv 

但在我看来argv(包含)的行为有点怪,因为在没有参数被赋予-say myscript.sh-,它会返回执行脚本的文件名,但是当给出一个或多个参数时,它仅包含参数。

您可以参考“可执行八度节目”文档的第2.6节。