A interpolação de string do script Bash deixa os colchetes intactos

2

A string de solicitação no exemplo abaixo interpola a variável de versão, mas mantém as chaves e eu não entendo o porquê.

#!/bin/sh

version=2989
request="http://example.com/?version={$version}&therest"
echo "$request"

Resultado:

$ ~/script.sh
http://example.com/?version={2989}&therest

Ambiente:

$ echo $0
-zsh
    
por Alexei Danchenkov 15.12.2017 / 21:02

2 respostas

3

O { é anterior a $ . Deve ser ${version} :)

    
por 15.12.2017 / 21:07
1

Compare:

$ version=1.2; echo "http://example.com/?version={$version}&therest"
http://example.com/?version={1.2}&therest
$ version=1.2; echo "http://example.com/?version=${version}&therest"
http://example.com/?version=1.2&therest

Por dentro, chaves são consideradas apenas caracteres normais, a menos que sejam parte de alguma construção como ${variableName} .

    
por 15.12.2017 / 21:07