Як зазначено в тексті, ви просто повинні посилатися на (наприклад, на $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
він присутній.