質問

コマンドラインの引数がeScriptをどのように機能するかは本当にわかりません。マンページから、引数がメイン/ 1への文字列のリストとして渡されることを理解しています。メインに渡された引数をどのように解析することができますか?

次の点を考慮してください。

#!/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

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リスト、実際に)を解釈し、それがすべての要素を連結されたすべての要素で印刷されます。

すべての引数を1つずつ印刷するには、io:format/2呼び出しの代わりにこれを試してください:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top