コマンドライン引数が escript でどのように機能するかよくわかりません。マンページから、引数が文字列のリストとして 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]).
簡単なテストで、1 つの引数だけですべてがうまくいくように見えます。
./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