我真的不明白命令行参数如何与 escripts 一起使用。从手册页中,我了解到参数作为字符串列表传递给 main/1。如何解析传递给 main 的参数?
考虑以下:
#!/usr/bin/env escript
usage() ->
io:format("Usage: ~s <port#>~n",[escript:script_name()]),
halt(1).
main([]) ->
usage();
main(Args)->
io:format("Starting test server on port #~s~n",[Args]).
一个简单的测试,只需一个参数,一切看起来都很好。
./test_server.erl 17001
Starting test server on port #17001
如果我传入多个参数怎么办?
./test_server.erl 17001 8 9 abc
Starting test server on port #1700189abc
那不是我想要的。我尝试在空格字符上拆分字符串:
....
ArgsList = string:tokens(Args, " "),
io:format("Length: ~w~n",[length(ArgsList)]),
....
产量长度:1