Ajuda com o eco do conteúdo de um arquivo que inclui variáveis

0

Eu tenho o arquivo foo que inclui foo ${bar} e eu tenho o script bash bar

bar="foo"
file=$(cat foo)
echo "$file"

que produz foo ${bar} . No entanto, quero produzir foo foo .

Como eu conseguiria isso?

    
por Bepsii.sh 09.04.2018 / 00:27

3 respostas

0

Se for possível integrar o arquivo no script (ou adicionar algum código ao arquivo), isso pode ser feito com um documento aqui:

foo=bar

cat <<EOT
abc
_${foo}_
def
EOT
    abc
    _bar_
    def

Algo semelhante pode ser feito com o arquivo simples:

export foo=bar

commands="cat <<EOT
$(<input)
EOT"

bash -c "$commands"
    
por 09.04.2018 / 00:38
2

Se você não se importar em exportar a variável para o seu ambiente, use envsubst :

NAME
       envsubst - substitutes environment variables in shell format strings

SYNOPSIS
       envsubst [OPTION] [SHELL-FORMAT]

DESCRIPTION
       Substitutes the values of environment variables.

dado

$ cat foo
foo ${bar}

então

$ export bar="foo"
$ envsubst < foo
foo foo
    
por 09.04.2018 / 00:45
0

Você pode conseguir isso usando eval :

$ cat foo
foo ${bar}

$ cat bar
bar="foo"
file="$(cat foo)"
eval echo "${file}"

$ bash bar
foo foo

Tenha em mente que eval poderia ser facilmente abusado. Por favor, leia questões de segurança e comando do Eval .

    
por 09.04.2018 / 00:35