Esta resposta é baseada e adaptada da resposta aceita para link
#!/bin/bash
export FOOBAR="SUCCESS"
file="testfile.txt"
var_name="TEST"
name="$file"
content="$(envsubst < "$file")"
echo "$content"
Ao contrário de eval
, envsubst
apenas substitui variáveis, não há risco de executar outros programas por meio de substituição de comando ou similar. É uma ferramenta de templates muito simples para shell.
envsubst
é parte dos utilitários de internacionalização do GNU gettext (no debian, é no pacote gettext-base
).
Observe que envsubst
(sendo um comando externo, não um shell embutido) pode ver somente as variáveis que foram exportadas (mas veja a opção allexport
standard sh
para tornar as variáveis subsequentemente definidas pela exportação do shell meio ambiente).