Как использовать переменную окружения(строку) в файле .conf

#bash #configuration #environment-variables

Вопрос:

У меня есть файл .conf с меткой и переменной, который я пытаюсь переместить в файл .env. Как я могу этого добиться?

Это то, что у меня есть в моем файле .conf

 [[inputs.snmp]] #Label
    agents = ["1.1.1.1:111","2.2.2.2:111","2.3.3.3:111"] #Variable
    version = 2 #Variable
 

Я пытаюсь сделать что-то подобное в файле .env

 VAR_FOR_CONF_FILE='[[inputs.snmp]]n    agents= ["1.1.1.1:111","2.2.2.2:111","2.3.3.3:111"]n    version=2'
 

Я надеялся, что смогу использовать $VAR_FOR_CONF_FILE в своем файле .conf вместо [[inputs.snmp]]agents = ["1.1.1.1:111","2.2.2.2:111","2.3.3.3:111"]
но я продолжаю получать эту ошибку Error parsing data: line 7: invalid TOML syntax $VAR_FOR_CONF_FILE (я не уверен, что получаю эту ошибку, потому что у меня неправильный синтаксис в файле .env или я неправильно объявляю файл $VAR_FOR_CONF_FILE в файле .conf)

Правильно ли я это делаю (или вообще возможно сделать то, что я пытаюсь сделать)?

(Примечание: Я пытаюсь сделать это, чтобы я мог просто использовать $VAR_FOR_CONF_FILE вместо жесткого кодирования вещи в файле .conf)

Комментарии:

1. Вам лучше показать строку кода, которая генерирует ошибку. Кстати, это не сообщение об ошибке, выданное самим bash.

2. @user1934428 Эта строка 7-это строка над ошибкой, которую я опубликовал. Вот что я получаю.

3. Это всего лишь присвоение переменной. Это не может привести к такой ошибке. Смотри здесь .

4. @user1934428 если вы спрашиваете, как я использую назначение переменной в моем файле .env, то я просто использую файл $VAR_FOR_CONF_FILE (который тоже находится в строке 7 — извините за путаницу)

5. Я не вижу в вашем посте, как бы вы это использовали. Нет смысла обсуждать ошибку, которую вы получаете, если мы не видим код, который ее создает.

Ответ №1:

Я пытаюсь использовать файл VAR_FOR_CONF_FILE в файле .conf

Если программа анализа файлов .conf не поддерживает подстановку переменных, изменить файл .conf невозможно, но это можно сделать автоматически:

 sed -i "s/<VAR_FOR_CONF_FILE>/$VAR_FOR_CONF_FILE/" my.conf