reconhece a variável bash dentro de um arquivo de texto

1

Eu tenho um modelo de arquivo que será usado por um script de shell para gerar outros arquivos e apenas alterar uma informação de preenchimento dentro deste modelo de arquivo usando variáveis.

conteúdo do arquivo template.example.log :

server name: $HOSTNAME
current user: $USER

Eu tento maneiras diferentes de fazer isso funcionar.

conteúdo do arquivo log.sh :

1) não funciona, o arquivo de saída some_log_1.log é o mesmo que template.example.log e as variáveis não foram alteradas.

FILE_TEMPLATE="'cat template.example.log'"
cat > some_log_1.log <<EOF
$FILE_TEMPLATE
EOF

2) não funcionam com o comando echo também, acontece o mesmo que acima.

echo $FILE_TEMPLATE > some_log_1.log

mas se eu fizer isso, funciona!

cat > some_log_1.log <<EOF
    server name: $HOSTNAME
    current user: $USER
EOF

a saída está certa!

server name: ubuntu-server
current user: leafar

mas não quero que o script seja executado dessa maneira. Eu quero ler o conteúdo de um arquivo de texto e cat-lo em outro arquivo de texto e fill the variables .

COMO POSSO FAZER ISSO? OBRIGADO. Ps: desculpe pelo meu inglês fraco

    
por Rafael Guimarães 09.07.2017 / 00:27

1 resposta

1

Uma opção é usar sed para editar os arquivos. Isso permite limitar quais variáveis são preenchidas.

Isso preencherá o template.txt e o enviará para o arquivo.txt:

sed -e "s/\$HOSTNAME/$HOSTNAME/" -e "s/\$USER/$USER/" template.txt > filled.txt

template.txt:

server name: $HOSTNAME
current user: $USER

filled.txt:

server name: ubuntu-server
current user: leafar
    
por 09.07.2017 / 02:24

Tags