Quick 1 liner:如何启动OTP应用程序并将命令行参数传递给它?
我希望能够以通用的“UNIX”方式启动OTP应用程序,能够传递由getopts解析的命令行参数。所以,我有一个erlang escript,它使用getopt库来处理命令行参数的解析。
shino的回答让我走上了正确的道路:
答案 0 :(得分:2)
您可以使用init:get_plain_arguments/0
函数来访问命令行(额外)参数。
示例:
$ erl -sname example -extra extra args here
Erlang R15B (erts-5.9) [source] [64-bit] [smp:2:2] [async-threads:0] [kernel-poll:false]
Eshell V5.9 (abort with ^G)
(example@localhost)1> init:get_plain_arguments().
["extra","args","here"]
init:get_plain_argumets/0
将-extra
选项后面的参数作为字符串列表返回。选项sname
仅用于解释, not 出现在init:get_plain_argumets/0
中。
有关详细信息,请参阅init
模块http://www.erlang.org/doc/man/init.html上的文档。
答案 1 :(得分:2)
您还可以在命令行上覆盖应用程序环境设置:
erl -myapp foo bar ...
这会将application.get_env(myapp,foo)设置为“bar”,覆盖任何app.config设置。