По справочной странице:
envsubst [OPTION] [SHELL-FORMAT]
Если задан SHELL-FORMAT, подставляются только те переменные окружения, на которые есть ссылки в SHELL-FORMAT; в противном случае все ссылки на переменные среды, встречающиеся в стандартном вводе, заменяются.
Где строки SHELL-FORMAT - это «строки со ссылками на переменные оболочки в форме $variable
или ${variable}
[...] имена переменных должны состоять исключительно из буквенно-цифровых символов или символов подчеркивания ASCII, не начинаться с цифры и быть непустыми; в противном случае такая ссылка на переменную проигнорировано «. ,
Таким образом, необходимо передать соответствующие имена переменных envsubst
в строке формата оболочки (очевидно, их нужно экранировать / заключать в кавычки, чтобы передавать их буквально envsubst
). Пример:
входной файл, например infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
и некоторые значения, такие как
export VAR1="one" VAR2="two" VAR3="three"
затем работает
envsubst '${VAR1} ${VAR3}' <infile
или же
envsubst '${VAR1},${VAR3}' <infile
или же
envsubst '${VAR1}
${VAR3}' <infile
выходы
VAR1=one
VAR2=${VAR2}
VAR3=three
Или, если вы предпочитаете обратную косую черту:
envsubst \$VAR1,\$VAR2 <infile
производит
VAR1=one
VAR2=two
VAR3=${VAR3}