gpt4 book ai didi

Erlang 脚本参数

转载 作者:行者123 更新时间:2023-12-05 01:21:44 24 4
gpt4 key购买 nike

我真的不明白命令行参数如何与脚本一起工作。从联机帮助页,我了解到参数作为字符串列表传递给 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

最佳答案

长度(L)

length/1是一个内置函数,您可以按原样使用:

io:format("Length: ~p~n", [length(Args)])

参数

Args 是一个字符串列表。此调用(使用 ~p 作为格式):

io:format("Starting test server on port #~p~n", [Args]).

将产生结果:

./test_server.erl 17001 8 9 abc
Starting test server on port #["17001","8","9","abc"]

如果您使用的是 ~s,Erlang 会将其解释为一个字符串(或者实际上是 IO 列表),并将所有元素连接在一起打印出来。

要一一打印出所有参数,试试这个而不是 io:format/2 调用:

[io:format("~s~n", [A]) || A <- Args].

关于Erlang 脚本参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5009218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com