&引用;初始化终止于do“u boot”;在执行Erlang脚本时引发

&引用;初始化终止于do“u boot”;在执行Erlang脚本时引发,erlang,erlang-shell,Erlang,Erlang Shell,这是我在“factorial.erl”中的代码: -module(factorial). -author("jasonzhu"). %% API -export([fac/1]). fac(0) -> 1; fac(N) -> N * fac(N-1). 在提示符中交互此代码时,它工作正常: 1> c(factorial). {ok,factorial} 2> factorial:fac(20). 2432902008176640000 但如果我从命令行编译并执行

这是我在“factorial.erl”中的代码:

-module(factorial).
-author("jasonzhu").

%% API
-export([fac/1]).

fac(0) -> 1;
fac(N) -> N * fac(N-1).
在提示符中交互此代码时,它工作正常:

1> c(factorial).
{ok,factorial}
2> factorial:fac(20).
2432902008176640000
但如果我从命令行编译并执行它,就会出现一些错误

Jasons-MacBook-Pro:src jasonzhu$ erlc factorial.erl 
Jasons-MacBook-Pro:src jasonzhu$ erl -noshell -s factorial fac 20 -s init stop
{"init terminating in do_boot",{badarith,[{factorial,fac,1,[{file,"factorial.erl"},{line,8}]},{init,start_it,1,[]},{init,start_em,1,[]}]}}

Crash dump was written to: erl_crash.dump
init terminating in do_boot ()
有人能帮我吗?我是Erlang的新手,非常感谢

-noshell语法是

erl -noshell -s Module Function Arguments
其中参数是一个原子列表。所以您必须从列表中获取'fac'参数,并将其转换为整数

这个

工作

-noshell语法是

erl -noshell -s Module Function Arguments
其中参数是一个原子列表。所以您必须从列表中获取'fac'参数,并将其转换为整数

这个

工作

>>> erl -noshell -s factorial fac 20 -s init stop
2432902008176640000