根据erlang http://erlang.org/doc/man/escript.html的手册:
如果脚本中的main / 1函数成功返回,则该脚本的退出状态为0。如果在执行过程中生成了异常,则会打印一条短消息,并且脚本以退出状态127终止。
要返回自己的非零退出代码,请调用halt(ExitCode),例如:
halt(1).
但是,我调用了halt(1)
以将退出状态1返回给调用者,调用者无法获得退出代码,并且我的shell脚本中$ERTS_DIR/bin/escript myscript
下面的命令未运行。顺便说一句,如果myscript正常退出,则接收到退出代码0,并且$ERTS_DIR/bin/escript myscript
下的命令正在运行。我该怎么办?
答案 0 :(得分:1)
听起来调用者是使用Graphical User Interface Requirements
的shell脚本,这意味着如果任何命令返回非零退出代码,它将退出。
您可以做的一件事是将通话包装在[rules][0][id]:1,
[rules][0][field]:1,
[valid]:true,
[IsActive]:true
public class FilterRule
{
public bool IsActive { get; set; }
public string Field { get; set; }
public string Id { get; set; }
public List<FilterRule> Rules { get; set; }
public string Value { get; set; }
}
中:
set -e
如果您只想对失败做一些特别的事情,请在前面放一个if
:
if $ERTS_DIR/bin/escript myscript; then
echo "the escript ran successfully"
else
echo "the escript failed with exit code $?"
fi
答案 1 :(得分:0)
对我有用。让我们运行一个示例:
~ $ echo $? # Using $? you can see last exit code in the shell
0
~ $ erl
Erlang/OTP 19 [erts-8.3] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V8.3 (abort with ^G)
1> halt(1).
~ $ echo $?
1
~ $ cat test.script
-module(test).
-export([main/1]).
main(_) ->
halt(127).
~ $ escript test.script
~ $ echo $?
127