Erlang OTPアプリケーションを開始し、アプリケーションのルートスーパーバイザーにコマンドライン引数を渡すことをどのように許可しますか?

StackOverflow https://stackoverflow.com/questions/9339238

  •  27-10-2019
  •  | 
  •  

質問

Quick 1ライナー:OTPアプリケーションをどのように開始し、コマンドラインの引数をパスしますか?

Getoptsによって解析されたコマンドライン引数を渡すことができる一般的な「Unix」方法でOTPアプリケーションを開始できることを望みました。だから、私は getopt コマンドライン引数の解析を処理するライブラリ。

シノの答えは私を正しい道に導いた:

  1. 私は私のescriptにgetoptsの解析をさせます
  2. EScriptは、アプリケーションを使用してアプリケーションの説明をメモリにロードします:load/1
  3. 次に、アプリケーション:set_env/3を使用してCLI argsを保存します
  4. 次に、アプリケーションでアプリケーションを起動します:start/2
  5. アプリケーションが起動すると、Application:get_env/2を介して引数にアクセスできます
役に立ちましたか?

解決

また、コマンドラインのアプリケーション環境設定をオーバーライドすることもできます。

erl -myapp foo bar ...

これにより、application.get_env(myapp、foo)を「bar」に設定し、app.config設定を上書きします。

他のヒント

使用できます 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 説明のためだけです いいえ に表示されます init:get_plain_argumets/0.

詳細については、ドキュメントを参照してください init モジュール http://www.erlang.org/doc/man/init.html .

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