[英]How can I build an Elixir escript that does not halt the Erlang VM after execution (like elixir --no-halt)
[英]How to pass command line arguements to mix run --no-halt
所以我有一个遵循这种布局的应用程序模块:
defmodule Project.Application do
use Application
def start(_type, _args) do
children = [
randomchild1,
randomchild2,
{Project.runapp, "argument" }
]
opts = [strategy: :one_for_all, name: Project.Supervisor]
Supervisor.start_link(children, opts)
end
end
现在,当我运行它时,我使用mix run --no-halt
并且它运行得很好。
我想用我在命令行中传递的值替换“参数”? 我不知道如何添加参数来mix run --no-halt
。
我想要做的就是将一个值传递给 start 方法并使用它来定义子进程。
mix
自动重置System.argv/1
。 --no-halt
选项是一种运行应用程序的特殊方式; 通常我们使用mix release
组装发布,并使用ebin/my_app start
正常启动它们。
虽然您仍然想求助于mix run --no-halt
,但创建空文件( mix
将尝试在启动时执行它,)并调用mix
像
mix run --no-halt -- "empty.exs" 42
现在在您的Application.start/2
您可以使用System.argv/0
获取参数
def start(_type, args) do
IO.inspect(System.argv())
...
核实。
mix run --no-halt -- "empty.exs" 42
#⇒ ["422"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.