如何在 运行 八度脚本时从语法错误中获取非零值 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-else
或 try-catches
包围我写的每个脚本,这就是为什么我在 SO 上打开这个问题。
我发现的解决方法是使用 --eval
标志来获取脚本。即
octave --eval "source('script.m');"
这样,如果您的脚本确实包含语法错误,return 值/状态是非零退出值。在这种情况下,我相信八度默认为 1
.
我无法重现您问题中的行为。至少在八度 5 中,做
octave myscript.m
在出错的情况下会导致 return 值为 1
。
同理
octave --eval "source('myscript.m')"
假设我有一个 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-else
或 try-catches
包围我写的每个脚本,这就是为什么我在 SO 上打开这个问题。
我发现的解决方法是使用 --eval
标志来获取脚本。即
octave --eval "source('script.m');"
这样,如果您的脚本确实包含语法错误,return 值/状态是非零退出值。在这种情况下,我相信八度默认为 1
.
我无法重现您问题中的行为。至少在八度 5 中,做
octave myscript.m
在出错的情况下会导致 return 值为 1
。
同理
octave --eval "source('myscript.m')"