как указано в тексте, вы просто должны ссылаться (например,$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 присутствует.