Antes de chamar envsubst
, você deve usar export e usar aspas simples para recuperar VAR1
modified. Como em:
export VAR1='somevalue'
Para mais detalhes, consulte:
Como substituir variáveis de shell em arquivos de texto complexos
Estou tentando realizar a substituição de variáveis de ambiente por meio de envsubst
, mas quero apenas substituir variáveis específicas.
A partir dos documentos, devo poder dizer a envsubst
para substituir apenas algumas variáveis, mas não estou conseguindo fazer isso.
Por exemplo, se eu tiver um arquivo contendo:
VAR_1=${VAR_1}
VAR_2=${VAR_2}
como devo executar envsubst
para que apenas substitua a referência a ${VAR_1}
?
Antes de chamar envsubst
, você deve usar export e usar aspas simples para recuperar VAR1
modified. Como em:
export VAR1='somevalue'
Para mais detalhes, consulte:
Como substituir variáveis de shell em arquivos de texto complexos
Por página do manual:
envsubst [OPTION] [SHELL-FORMAT]
If a SHELL-FORMAT is given, only those environment variables that are referenced in SHELL-FORMAT are substituted; otherwise all environment variables references occurring in standard input are substituted.
Em que as strings SHELL-FORMAT são "strings com referências a variáveis shell na forma $variable
ou ${variable}
[...] Os nomes das variáveis devem consistir apenas em caracteres alfanuméricos ou sublinhados ASCII, não começar com um dígito e não estarem vazios; caso contrário, essa referência variável é ignorada. "
.
Então, é preciso passar os respectivos nomes de variáveis para envsubst
em uma string de formato de shell (obviamente, eles precisam ser escapados / citados de modo a serem passados literalmente para envsubst
). Exemplo:
arquivo de entrada, por exemplo infile
:
VAR1=${VAR1}
VAR2=${VAR2}
VAR3=${VAR3}
e alguns valores como
export VAR1="one" VAR2="two" VAR3="three"
em seguida, executando
envsubst '${VAR1} ${VAR3}' <infile
ou
envsubst '${VAR1},${VAR3}' <infile
ou
envsubst '${VAR1}
${VAR3}' <infile
saídas
VAR1=one
VAR2=${VAR2}
VAR3=three
Ou, se você preferir a barra invertida:
envsubst \$VAR1,\$VAR2 <infile
produz
VAR1=one
VAR2=two
VAR3=${VAR3}