Bash evita que variáveis sejam executadas como entrada

0

Eu tenho um script bash no qual preciso enviar consultas para um servidor de api de descanso usando o curl.

Estou tentando fazer isso:

$(curl -m100000000000000000000000000000000 -X POST -H "Content-Type: application/json" -d'{"queryType":"SQL", "query": "create table hdfs.bigdata.'databases/'$cleantn'/'$timestamp'' AS (SELECT * FROM dfs.''$tempfile'')"}' http://localhost:8047/query.json)

Eu não consigo fazer isso funcionar. O * está sendo avaliado do bash

colocando isso em um ambiente variável ainda não funciona

query='{"queryType":"SQL", "query": "create table hdfs.bigdata.'databases/'$cleantn'/'$timestamp'' AS (SELECT * FROM dfs.''$tempfile'')"}'
$(curl -m100000000000000000000000000000000 -X POST -H "Content-Type: application/json" -d''$query'' http://localhost:8047/query.json)
#or
$(curl -m100000000000000000000000000000000 -X POST -H "Content-Type: application/json" -d"$query" http://localhost:8047/query.json)
    
por Federico Ponzi 17.02.2016 / 12:44

1 resposta

0
query='{"queryType":"SQL", "query": "create table hdfs.bigdata.'databases/'$cleantn'/'$timestamp'' AS (SELECT * FROM dfs.''$tempfile'')"}'

Troque as aspas. O bash não processará nada nas cotações de fala "" ou com o escape prefixado \

O texto acima se torna:

query="{'queryType':'SQL', 'query': 'create table hdfs.bigdata.'databases/'$cleantn'/'$timestamp'' AS (SELECT * FROM dfs.''$tempfile'')'}"
    
por 17.02.2016 / 12:51

Tags