Как я могу прочитать значения из файла конфигурации (текст)?

Мне нужно прочитать значения (текст) из файла конфигурации с именем .env и присвоить их переменным, чтобы я мог использовать их позже в своей программе.

Файл .env содержит пары имя/значение и выглядит примерно так:

ENVIRONMENT_VARIABLE_ONE = AC9157847d72b1aa5370fdef36786863d9
ENVIRONMENT_VARIABLE_TWO = 73cad721b8cad6718d469acc42ffdb1f
ENVIRONMENT_VARIABLE_THREE = +13335557777

Что я уже пробовал

read-values.red

Red [

]

contents: read/lines %.env

env-one: first contents
env-two: second contents
env-three: third contents

print env-one ; ENVIRONMENT_VARIABLE_ONE = AC9157847d72b1aa5370fdef36786863d9
print env-two ; ENVIRONMENT_VARIABLE_ONE = 73cad721b8cad6718d469acc42ffdb1f
print env-three ; ENVIRONMENT_VARIABLE_ONE = +13335557777

Что мне нужно

print env-one ; AC9157847d72b1aa5370fdef36786863d9
print env-two ; 73cad721b8cad6718d469acc42ffdb1f
print env-three ; +13335557777

Как мне продолжить или изменить свой код и проанализировать эти строки, такие как переменные env-, будут содержать только значения?


person Alex Baban    schedule 29.07.2018    source источник


Ответы (2)


env-one: skip find first contents " = " 3

См. справку по поиску и пропуску

person giuliolunati    schedule 29.07.2018
comment
Отлично, все работает, большое спасибо. Не могли бы вы порекомендовать ссылку для помощи? - person Alex Baban; 29.07.2018
comment
Красный в значительной степени совместим с Rebol, поэтому вам может помочь документация по Rebol 3. Хорошего дня кодирования! :-) - person giuliolunati; 29.07.2018

Другим решением с использованием parse может быть: foreach [word value] parse read %.env [collect some [keep to "=" skip keep to newline skip]] [set load word trim value]

Это добавит слова в глобальный контекст ENVIRONMENT_VARIABLE_ONE будет AC9157847d72b1aa5370fdef36786863d9 и так далее.

person endo64    schedule 30.07.2018
comment
Вместо добавления слов в контекст по умолчанию здесь используется другая версия, которая возвращает значение map!: /e1c0f0db9b287e2e1392604f79d9f3fd Также [keep to "=" skip keep to [newline | end] skip] может быть лучше, так как вышеприведенная версия не работает, если в конце нет новой строки. - person endo64; 13.01.2019