Como usar variável na variável no bash?

0

Eu tenho duas variáveis -

regex="<version>[0-9]*\.[0-9]*\.[0-9]*[^<]*<\/version>"
updated_regex="<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>"

Qual eu quero usar no seguinte comando -

sed "s/$regex/$updated_regex/1" pom.xml 

Mas não está funcionando como o regex e as variáveis não estão sendo avaliadas ou substituídas no meu comando.

    
por monster 01.08.2018 / 21:08

1 resposta

1

Como eu já disse no meu comentário, quando você corre a linha

updated_regex="<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>"

a variável updated_regex será atribuída a essa string, onde todas essas variáveis serão expandidas no momento em que você executar essa linha.

Quando você executar a linha sed , esta string será usada, mas as variáveis dentro da linha superior não serão expandidas novamente. Então a solução é usar o seguinte:

regex="<version>[0-9]*\.[0-9]*\.[0-9]*[^<]*<\/version>"
sed "s/$regex/<version>${main_version}\.${feature_version}\.${patch_version}${tag}<\/version>/1" pom.xml 
    
por 01.08.2018 / 21:16