Estou tentando executar a substituição de variáveis de ambiente envsubst
, mas quero substituir apenas variáveis específicas.
A partir dos documentos, devo ser capaz de dizer envsubst
para substituir apenas determinadas variáveis, mas não consigo fazer isso.
Por exemplo, se eu tiver um arquivo contendo:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
como devo executar envsubst
para substituir apenas a referência ${VAR_1}
?
shell
environment-variables
João Angelo
fonte
fonte
Pela página do manual:
Onde strings SHELL-FORMAT são "strings com referências a variáveis de shell no formato
$variable
ou${variable}
[...] nome da variável devem consistir apenas em caracteres ASCII alfanuméricos ou sublinhados, não devem começar com um dígito e não ser vazios; caso contrário, essa referência de variável é ignorado ". .Portanto, é preciso passar os nomes das respectivas variáveis
envsubst
em uma string no formato de shell (obviamente, eles precisam ser escapados / citados para serem passados literalmente paraenvsubst
). Exemplo:arquivo de entrada, por exemplo
infile
:e alguns valores como
então correndo
ou
ou
saídas
Ou, se você preferir barra invertida:
produz
fonte
envsubst "$(printf '${%s} ' ${!PREFIX*})" < infile
SUBST_VARS
:envsubst "$(printf '${%s} ' $SUBST_VARS)" < infile