如何在 运行 八度脚本时从语法错误中获取非零值 return?

How do I get non-zero return from a syntax error while running an octave script?

假设我有一个 test.m 八度脚本

test.m

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

所以我 运行 脚本

octave test.m

我感兴趣的是,如果脚本包含语法错误,我如何将 Octave 设置为 return 非零退出状态? 请注意,我对使用 if-else 语句封装代码并执行 exit(-1) 不感兴趣。如果脚本包含语法错误,我对告诉 Octave return 一个非零值的解决方案很感兴趣。

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

没关系我解决了它。为了说明为什么我需要这种行为,这是因为我正在尝试编写基本上测试我编写的八度函数的八度脚本。

现在我经常会编写包含语法错误的脚本,而 Octave 在解析脚本时会引发错误。但是,return 状态始终是 0 如果您 运行 您的脚本以直接的方式,例如:

octave script.m

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

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

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

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

我无法重现您问题中的行为。至少在八度 5 中,做

octave myscript.m

在出错的情况下会导致 return 值为 1

同理

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