3

クイック 1 ライナー: OTP アプリケーションを起動し、コマンドライン引数を渡すにはどうすればよいですか?

一般的な「UNIX」の方法で OTP アプリケーションを起動し、getopts によって解析されたコマンドライン引数を渡すことができるようにしたいと考えていました。そのため、 getoptライブラリを使用してコマンドライン引数の解析を処理する erlang escript があります。

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

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

2 に答える 2

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は説明のためのものであり、には表示されませinit:get_plain_argumets/0

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

于 2012-02-18T12:26:15.567 に答える
2

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

erl -myapp foo bar ...

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

于 2012-02-18T15:39:57.637 に答える