我需要将两个参数传递给我的Erlang代码。它在Erlang shell中运行良好。
2> crop:fall_velocity(x,23).
21.23205124334434
但是如何在没有Erlang shell的情况下运行Erlang代码。像普通的python,c程序。 ./program_name(不传递$ 1 $ 2参数)。
我正在尝试这个
erl -noshell -s crop fall_velocity(x,20) -s init stop
但它会出现意外的令牌错误。
答案 0 :(得分:6)
作为documentation states,-s
将所有参数作为一个原子列表提供,-run
执行相同但作为字符串列表。如果要使用任意参数计数和类型调用任意函数,则应使用-eval
:
$ erl -noshell -eval 'io:format("test\n",[]),init:stop()'
test
$
答案 1 :(得分:4)
您可以使用escript从命令行运行Erlang脚本。在该脚本中,您应该创建一个main
函数,该函数将一个参数数组作为字符串。
#!/usr/bin/env escript
main(Args) ->
io:format("Printing arguments:~n"),
lists:foreach(fun(Arg) -> io:format("Got argument: ~p~n", [Arg]) end,Args).
输出:
./escripter.erl hi what is your name 5 6 7 9
Printing arguments:
Got argument: "hi"
Got argument: "what"
Got argument: "is"
Got argument: "your"
Got argument: "name"
Got argument: "5"
Got argument: "6"
Got argument: "7"
Got argument: "9"