首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可执行的octave脚本:'usr/local/bin/octave:无效选项--‘

可执行的octave脚本:'usr/local/bin/octave:无效选项--‘
EN

Stack Overflow用户
提问于 2012-03-11 22:51:38
回答 3查看 4K关注 0票数 1

我正在尝试写一个Octave脚本,我可以作为一个可执行文件运行。

我使用的是八度版本3.6.0。我正在运行从这里下载的以下脚本

代码语言:javascript
复制
#!/usr/local/bin/octave -qf

# An example Octave script 

len = input( "What size array do you wish to use for the evaluation: " );

clear a; 
tic(); 
for i=1:len
    a(i) = i; 
endfor 
time1 = toc();

a = [1]; 
tic(); 
for i=2:len 
    a = [a i]; 
endfor
time2 = toc();

a=zeros( len, 1 ); 
tic(); 
for i=1:len 
    a(i) = i; 
endfor
time3 = toc();

printf( "The time taken for method 1 was %.4f seconds\n", time1 );
printf( "The time taken for method 2 was %.4f seconds\n", time2 );
printf( "The time taken for method 3 was %.4f seconds\n", time3 );

但是,当我在命令行上运行脚本时,会得到以下错误:

‘'usr/local/bin/octave:无效选项-’

但是,当我在命令行输入相同的命令时:

/usr/local/bin/octave -qf

我得到八度命令提示符。我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-11 23:12:54

我想您所处的是某种Unix/Linux系统。文件是否采用DOS格式,带有DOS样式的行尾?这可能会导致解释命令的方式出现问题。

票数 5
EN

Stack Overflow用户

发布于 2012-03-13 02:54:02

您的shebang行(顺便说一句,它有一个不应该使用的空格)正在调用/usr/local/bin/octave,但是错误来自/usr/bin/octave。这是个错误吗?如果是这样的话,您需要复制并粘贴代码和类似的错误。如果不是,local版本可能是一个脚本,在非交互运行时调用带有不正确选项的二进制文件。特别是,它看起来像是脚本(或某些东西,至少)试图使用一个长选项(--option),而二进制文件不支持它(所以它将它解释为一个短选项)。

票数 0
EN

Stack Overflow用户

发布于 2012-03-17 08:52:43

首先,发布的脚本在我的系统上运行良好。

我输入nano test.sh,将其复制到文件中,我将第一行更改为#!/usr/bin/octave -qf

我按Ctrl和Ctrl。

然后,我使用chmod +x test.sh使脚本可执行。

然后,我使用./test.sh或octave -qf test.sh运行脚本,它按预期工作。

注:我系统上的八度音阶是

代码语言:javascript
复制
$ which octave
/usr/bin/octave 

$ file /usr/bin/octave
/usr/bin/octave: symbolic link to `octave-3.6.1'

$file /usr/bin/octave-3.6.1 
/usr/bin/octave-3.6.1: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically       linked (uses shared libs), for GNU/Linux 2.6.32,  BuildID[sha1]=0x061b0a703928fc22af5ca93ee78346a7f5a0e481, stripped

在我的系统中,/usr/bin/usr/local/bin$PATH

生成您提到的错误的唯一方法是将脚本的第一行更改为#!/usr/bin/octave - -#!/usr/bin/octave -q -f

这给了我们

代码语言:javascript
复制
$ ./test.sh 
/usr/bin/octave: invalid option -- ' '

这意味着在您的机器上的脚本中,shebang行是不正确的,或者是被错误地解释了。

验证第一行在脚本中是否正确。

另外,如果行更改为#!/usr/local/bin/octave -q#!/usr/local/bin/octave -f,还会发生什么。

有关解析shebang行的更多信息,请参见:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9659711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档