Jak wskazano w tekście, wystarczy odwołać się (np. Przez $VARNAME
lub ${VARNAME}
) do zmiennych, jak w zwykłym poleceniu powłoki. Musisz jednak upewnić się, że powłoka nie rozwinie ich wcześniej.
Oto kilka przykładów ilustrujących to (zakładając export FOO=BAR
):
$ echo '$FOO$FOO2' | envsubst
BAR
Jak widać, $ FOO2 został zastąpiony przez „”, ponieważ nie został zdefiniowany. Teraz możemy ograniczyć tę wymianę tylko do $ FOO poprzez:
$ echo '$FOO$FOO2' | envsubst '$FOO'
BAR$FOO2
użycie ""
zamiast ''
prowadziłoby do podstawienia, zanim będzie potrzebne:
echo '$FOO$FOO2' | envsubst "$FOO"
$FOO$FOO2
(Jest to skuteczne wywołanie, envsubst "BAR"
które nie wykrywa żadnych zmiennych, więc żadne nie są zastępowane).
Jak man
napisano na stronie, wszystkie zmienne, do których istnieją odwołania, SHELL-FORMAT
są zastępowane, więc możemy nawet to zrobić:
echo '$FOO$FOO2$FOO3' | envsubst '$FOO some more text ${FOO3}'
BAR$FOO2
Jak widać, SHELL-FORMAT
jest dość elastyczny.
Na koniec parametr --variables
pozwala ocenić, które zmienne są wybrane do podstawienia przez SHELL-FORMAT
:
envsubst --variables '$FOO some more text ${FOO3}'
FOO
FOO3
W powyższym przykładzie przedwczesnego zastąpienia pokazałby błąd:
$ envsubst --variables "$FOO"
(empty string returned)
Jak podano na stronie man
, envsubst
nie przetwarza żadnego standardowego wejścia, jeśli --variables
jest obecne.
Verbage to trochę zamieszanie. Aby dokładniej przeredagować tekst pomocy:
Aby więc wyraźnie odpowiedzieć na twoje pytanie: poprzedź nazwę zmiennej za pomocą
$
.źródło