Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何启动Erlang OTP应用程序并允许将命令行参数传递给应用程序';谁是根主管?_Erlang_Otp_Erlang Escript - Fatal编程技术网

如何启动Erlang OTP应用程序并允许将命令行参数传递给应用程序';谁是根主管?

如何启动Erlang OTP应用程序并允许将命令行参数传递给应用程序';谁是根主管?,erlang,otp,erlang-escript,Erlang,Otp,Erlang Escript,快速1行程序:如何启动OTP应用程序并向其传递命令行参数 我希望能够以通用的“UNIX”方式启动OTP应用程序,能够传递由getopts解析的命令行参数。因此,我有一个erlang escript,它使用库来处理命令行参数的解析 shino的回答让我走上了正确的道路: 我让我的脚本做getopts解析 然后,escript使用application:load/1将应用程序描述加载到内存中 然后我使用application:set_env/3来存储CLI参数 现在,使用application:st

快速1行程序:如何启动OTP应用程序并向其传递命令行参数

我希望能够以通用的“UNIX”方式启动OTP应用程序,能够传递由getopts解析的命令行参数。因此,我有一个erlang escript,它使用库来处理命令行参数的解析

shino的回答让我走上了正确的道路:

  • 我让我的脚本做getopts解析
  • 然后,escript使用application:load/1将应用程序描述加载到内存中
  • 然后我使用application:set_env/3来存储CLI参数
  • 现在,使用application:start/2启动应用程序
  • 一旦应用程序启动,就可以通过application:get_env/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\u plain\u arguments/0
    -extra
    选项之后返回参数作为字符串列表。选项
    sname
    仅用于解释,它不会出现在
    init:get\u plain\u arguments/0


    有关更多详细信息,请参阅
    init
    模块上的文档。

    您还可以在命令行上覆盖应用程序环境设置:

    erl -myapp foo bar ...
    
    这将把application.get_env(myapp,foo)设置为“bar”,覆盖任何app.config设置