Как указано в тексте, вам просто нужно ссылаться (например, $VARNAME или ${VARNAME}) на переменные, как в обычной команде оболочки. Однако вы должны убедиться, что оболочка не раскрывает их заранее.
Вот несколько примеров, чтобы проиллюстрировать это (при условии export FOO=BAR):
$ echo '$FOO$FOO2' | envsubst
BAR
Как видите, $ FOO2 был заменен на "", поскольку он не был определен. Теперь мы можем ограничить эту замену только $ FOO:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
использование "" вместо '' приведет к замене до того, как это будет необходимо:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Это соответствует эффективному вызову envsubst "BAR" который не обнаруживает никаких переменных, поэтому ни одна из них не заменяется.)
Как сказано на странице man , все переменные, на которые есть ссылки в SHELL-FORMAT , заменены, поэтому мы можем даже сделать это:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Как видите, SHELL-FORMAT довольно гибок.
Наконец, параметр --variables позволяет вам оценить, какие переменные выбраны для подстановки SHELL-FORMAT:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
В приведенном выше примере преждевременной замены это показало бы ошибку:
$ envsubst --variables "$FOO"
(empty string returned)
Как указано на странице man , envsubst не обрабатывает никакой ввод stdinput, когда присутствует --variables .