Я пытаюсь выполнить замену переменных среды через envsubst
, но я хочу заменить только определенные переменные.
Из документов я должен сказать, envsubst
чтобы заменить только определенные переменные, но я не могу это сделать.
Например, если у меня есть файл, содержащий:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
как выполнить envsubst
так, чтобы он заменял только ссылку на ${VAR_1}
?
shell
environment-variables
Жоао Анжело
источник
источник
По справочной странице:
Где строки SHELL-FORMAT - это «строки со ссылками на переменные оболочки в форме
$variable
или${variable}
[...] имена переменных должны состоять исключительно из буквенно-цифровых символов или символов подчеркивания ASCII, не начинаться с цифры и быть непустыми; в противном случае такая ссылка на переменную проигнорировано «. ,Таким образом, необходимо передать соответствующие имена переменных
envsubst
в строке формата оболочки (очевидно, их нужно экранировать / заключать в кавычки, чтобы передавать их буквальноenvsubst
). Пример:входной файл, например
infile
:и некоторые значения, такие как
затем работает
или же
или же
выходы
Или, если вы предпочитаете обратную косую черту:
производит
источник
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile