Próbuję wykonać zamianę zmiennych środowiskowych envsubst
, ale chcę zastąpić tylko określone zmienne.
Z dokumentów powinienem być w stanie powiedzieć, envsubst
aby zastąpić tylko niektóre zmienne, ale nie jestem w stanie tego zrobić.
Na przykład, jeśli mam plik zawierający:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
jak powinienem wykonać, envsubst
aby zastąpić tylko odwołanie do ${VAR_1}
?
shell
environment-variables
João Angelo
źródło
źródło
Na stronę podręcznika:
Gdzie ciągi SHELL-FORMAT są „ciągami z odniesieniami do zmiennych powłoki w formie
$variable
lub${variable}
[...] Nazwy zmiennych muszą składać się wyłącznie ze znaków alfanumerycznych lub znaków podkreślenia ASCII, nie mogą zaczynać się cyfrą i być niepuste; w przeciwnym razie takie odwołanie do zmiennej jest ignorowane ”. . Trzebawięc przekazać odpowiednie nazwy zmiennych do
envsubst
łańcucha formatu powłoki (oczywiście trzeba je wstawić / cytować, aby dosłownie przekazaćenvsubst
). Przykład:plik wejściowy np .
infile
:i niektóre wartości jak
następnie biegnie
lub
lub
wyjścia
Lub, jeśli wolisz ukośnik odwrotny:
produkuje
źródło
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
to:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile