我在模块mymodule中有一个带有两个参数的函数。如何从命令行运行此功能。
我试试这个:
erl -name myname@myserver.com -s mymodule start 5 10
但它引发了错误: {“init终止于do_boot”,{undef,[{mymodule,start,[['5','10']]},{init,start_it,1},{init,start_em,1}]}}
我希望能够从bash文件中运行此函数
答案 0 :(得分:3)
我认为它期望start函数具有1的arity,所以在这种情况下它试图调用module:start(['5','10'])。因此,更改启动函数以接受2个参数的列表,如[arg1,arg2]中所示。另外,请查看-run和-s标志上的文档。 -s将参数作为原子传递,而-run将它们作为字符串传递
-run Mod [Func [Arg1,Arg2,...]](init标志) 使init调用指定的函数。 Func默认启动。如果没有提供参数,则假定该函数为arity 0.否则假定为arity 1,将列表[Arg1,Arg2,...]作为参数。所有参数都作为字符串传递。见init(3)。