运行八度脚本时,如何从语法错误中获得非零返回?

时间:2019-03-15 19:36:47

标签: octave

让我说我有一个test.m八度音阶脚本

test.m

x = 1;
A  % Syntax error, A isn't defined

所以我运行脚本

octave test.m

我感兴趣的是,如果脚本包含语法错误,如何使八度返回非零退出状态? 请注意,我对使用if-else语句封装代码并执行exit(-1) 不感兴趣。我对一种解决方案感兴趣,该解决方案告诉octave如果脚本包含语法错误,则返回一个非零值。

编辑:我使用的是Ubuntu 18.04的默认Octave 4.2。评论者建议Octave 5+不会表现出这种行为。

enter image description here

2 个答案:

答案 0 :(得分:1)

没关系,我解决了它。为了提供一些背景,说明为什么我需要这种行为,这是因为我正在尝试编写基本上测试我编写的八度音阶功能的八度音阶脚本。

现在,我经常会编写包含语法错误的脚本,并且八度会在解析脚本时引发错误。但是,如果您以如下方式直接运行脚本,则返回状态始终为0

octave script.m

无论您的八度音阶脚本是否包含语法错误。但是,我不想包围用if-elsetry-catches编写的每个脚本,这就是为什么我在SO上打开了这个问题。

我发现一种解决方法只是使用--eval标志来获取脚本。即

octave --eval "source('script.m');"

这样,如果脚本中确实包含语法错误,则返回值/状态为非零退出值。在这种情况下,我相信八度默认为1

答案 1 :(得分:0)

我无法重现您的问题。至少在八度音阶中做

octave myscript.m

如果出现错误,将返回1的返回值。

与做

octave --eval "source('myscript.m')"