Làm cách nào để truy cập cờ dòng lệnh (đối số) dưới dạng biến môi trường trong Erlang. (Như cờ, không argv) Ví dụ:Erlang: Cách truy cập cờ CLI (đối số) dưới dạng biến môi trường ứng dụng?
RabbitMQ cli trông giống như sau:
erl \
...
-sasl errlog_type error \
-sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
... # more stuff here
Nếu ai đó nhìn vào sasl.erl
bạn nhìn thấy dòng:
get_sasl_error_logger() ->
case application:get_env(sasl, sasl_error_logger) of
% ... etc
Theo một số chưa biết phép thuật của sasl_error_logger
biến trở thành một tuple erlang! Tôi đã cố gắng sao chép này trong erlang của riêng tôi application
, nhưng tôi dường như chỉ có thể truy cập các giá trị này thông qua init:get_argument
, trả về giá trị dưới dạng một chuỗi.
Làm cách nào để chuyển giá trị thông qua dòng lệnh và có thể truy cập chúng một cách dễ dàng như các thuật ngữ erlang?
CẬP NHẬT Ngoài ra cho bất cứ ai tìm kiếm, sử dụng các biến môi trường theo cách 'thông thường' sử dụng os:getenv("THE_VAR")
Alan, cảm ơn mẹo. Tôi có param trong tập tin '.app' của tôi. Tin tốt: Tôi nhận được giá trị mặc định được chỉ định trong tệp '.app'. Tin xấu: Tôi dường như không thể ghi đè lên dòng lệnh. –
Nate, bạn có thể hiển thị cho chúng tôi tệp ứng dụng của bạn và lệnh bạn bắt đầu xóa không? – Zed
Có - nó sẽ hoạt động vì vậy có thể có một cái gì đó fishy trong dòng lệnh của bạn. Bạn đã bắt đầu ứng dụng của mình chưa khi bạn truy cập vào môi trường? –