Comment accéder à l'indicateur de ligne de commande (arguments) en tant que variables d'environnement dans Erlang. (Comme drapeaux, non ARGV) Par exemple:Erlang: Comment accéder aux indicateurs CLI (arguments) en tant que variables d'environnement d'application?
RabbitMQ cli ressemble à quelque chose comme:
erl \
...
-sasl errlog_type error \
-sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
... # more stuff here
Si on regarde sasl.erl
vous voyez la ligne:
get_sasl_error_logger() ->
case application:get_env(sasl, sasl_error_logger) of
% ... etc
par magie inconnue le sasl_error_logger
variable devient un erlang tuple! J'ai essayé de répliquer ceci dans mon propre erlang application
, mais je semble être seulement capable d'accéder à ces valeurs par init:get_argument
, qui renvoie la valeur comme chaîne.
Comment passer des valeurs via la ligne de commande et pouvoir y accéder facilement en tant que termes erlang?
MISE À JOUR aussi pour tous ceux qui cherchent à utiliser des variables d'environnement dans la « régulière » façon utiliser os:getenv("THE_VAR")
Alan, merci pour le conseil. J'ai le param dans mon fichier '.app'. Bonne nouvelle: j'obtiens la valeur par défaut spécifiée dans le fichier '.app'. Mauvaises nouvelles: je ne peux pas sembler l'ignorer sur la ligne de commande. –
Nate, pourriez-vous nous montrer votre fichier d'application et la commande avec laquelle vous commencez erlang? – Zed
Oui - cela devrait fonctionner donc il y a probablement quelque chose de louche dans votre ligne de commande. Avez-vous commencé votre application au moment où vous accédez à l'environnement? –