Transferindo uma variável de um arquivo para outro

0

Eu tenho dois arquivos, config e template, e quero substituir partes do template por variáveis da config:

config.txt contém:

MYURL='www.google.com'

template.txt contém:

url = MYURL

eu usei

sed -e "s/MYURL/${replace}$MYURL/" template

Mas as variáveis do config.txt são definidas apenas dentro desse arquivo. Eu também tentei usar

source config.txt
echo $MYURL

Mas não fez o que eu queria. Como eu pude fazer isso?

    
por Jay 14.07.2016 / 12:27

1 resposta

0

Alguns comentários apenas para mostrar por que eu usaria o grep mais tarde:

$ cat config.txt
/* blah blah yadda yadda */
/* look at me... I'm a text file, not a bash script... don't source me directly */
#MYURL='www.google.com'
MYURL='www.stackexchange.com'

$ cat template.txt
#url = example
url = MYURL

E o script:

$ source <(grep -E "^[0-9A-Za-z]+=" config.txt) 
$ echo $MYURL 
www.stackexchange.com
$ sed -r -e "s/^url[ ]*=.*/url=${MYURL}/" template.txt 
#url = example
url=www.stackexchange.com

(por acaso não tenho ideia de qual foi a intenção do seu script sed ... o meu tem uma abordagem totalmente diferente e suporta tanto com ou sem espaços em branco no modelo url = ... e url = ..., mas você não pode ter espaço em branco em config.txt ou você não pode fonte-lo ... sem adicionar sed novamente ao meu grep)

edit: oh, eu acho que o que você queria era substituir por valor fictício ao invés de chave, que se você preferir é simplesmente:

$ sed -r -e "s/MYURL/${MYURL}/" template.txt 
#url = example
url = www.stackexchange.com
    
por 14.07.2016 / 12:35