A melhor maneira de adicionar variáveis Unix Shell ao pedido CURL GET

1

Digamos que eu use o comando curl –X GET com o seguinte link:

“$WEBSITE_URL/ACTION_NAME/ACTION1;id=$ID?Command=TEST&id1=$ID1&id2=$ID2&id3=$ID3”

Como você pode ver, existem algumas variáveis $ nessa string. Obviamente, apenas adicioná-los à string sem informar ao Bash onde essas variáveis começam e terminam, não funcionará.

Então eu tentei usar todos os tipos de tags que eu encontrei (ie '' $ Variable '', $ {Variable}, etc.) para separar variáveis e fazer essa string parecer e agir mais como uma requisição normal, mas nenhuma deles funcionou. Havia alguns tópicos relacionados aqui, eles foram úteis, mas as informações que recebi ainda não funcionaram - provavelmente porque meu caso é um pouco diferente dos exemplos básicos e estou sentindo falta de algo aqui. Alguma ideia? Felicidades!

    
por C_U 26.01.2015 / 15:36

3 respostas

2

Você não parece estar escapando de caracteres especiais adequadamente; especificamente ; , & e ?

Além disso, pode ser uma função deste site, mas suas aspas duplas não são as citações que você está procurando: não é o mesmo que "

Eu usaria:

# curl "${WEBSITE_URL}/${ACTION_NAME}/${ACTION1}\;id=${ID}\?Command=TEST\&id1=${ID1}\&id2=${ID2}\&id3=${ID3}"

    
por 20.07.2015 / 19:47
0

bash usa todos os caracteres após $ que são válidos em um nome de variável para determinar o nome, ou seja, o primeiro caractere ilegal limita a string de nome.

Em caso de dúvida ${Variable} deve ser usado. Você já mencionou isso, então o seu problema deve ser algo diferente.

    
por 26.01.2015 / 15:43
-1

Crie a string como uma variável e passe essa variável para curl.

string="${WEBSITE_URL}/ACTION_NAME/ACTION1;id=${ID}?Command=TEST&id1=${ID1}&id2=${ID2}&id3=${ID3}"
echo $string #this should get the right string to be passed to curl
curl -X GET $string
    
por 26.01.2015 / 15:51