所以我正在研究Octave脚本(我对该语言相对缺乏经验),我正在尝试打开两个csv文件,这些文件的名称我作为命令行参数传递给我的脚本。这是我的剧本:
#!/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
任何建议都将不胜感激
答案 0 :(得分:3)
问题是您创建了一个可执行的Octave脚本,该脚本需要参数但不提供任何参数。
首先,我将文件作为
启动#!/usr/bin/octave -qf
然后可以将脚本作为
运行$ ./myscript.sh datafile1.csv datafile2.csv
但是在我看来argv()的行为有点奇怪,因为当没有给-say myscript.sh-赋予参数时,它返回执行脚本的文件名,但是当给出一个或多个参数时它包含参数仅
您可以参考“可执行的八度程序”文档的第2.6节。