Как указано в тексте, вы просто должны ссылаться (например, с помощью $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сказано в -page, все переменные, на которые есть ссылки 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-page, envsubstне обрабатывает stdinput, когда --variablesприсутствует.