Problema com a substituição do comando bash & variable [duplicate]

0

Eu tenho um script bash que faz uma solicitação de onda para um URL. Todos os cabeçalhos de curl e informações estão contidos em uma variável, aqui está um exemplo simplificado

STRING="'http://www.mydomain.com/url' -H 'mydomain.com'"

Eu originalmente tinha o script trabalhando fazendo echo e xargs para passá-lo, mas eu tenho lido que pode não ser uma boa maneira de fazer as coisas

Eu encontrei problemas quando tentei curl $STRING , e adicionando aspas duplas para torná-lo curl "$STRING" agora dá um erro de curl dizendo "curl: (1) Protocolo" 'http "não suportado ou desabilitado no libcurl"

Eu estou supondo que há algo simples que eu estou negligenciando aqui, possivelmente relacionado às aspas e espaços (eu tentei escapar de aspas simples anteriormente e adicionei-as literalmente na string)

Se eu fizer o eco de $ STRING, ele será exibido como escrito com todas as aspas e aspas simples, e fazendo echo $STRING | xargs curl fazer o que eu quero corretamente, ele enrola com minha string como entrada

    
por Kate N 14.02.2017 / 21:45

2 respostas

2

O que há de errado com xargs , especialmente se funciona?

O Shell remove as cotações que não são resultado de nenhuma expansão, o que significa que não removerá as aspas simples que resultam da remoção das aspas duplas. Use uma matriz em vez disso:

args=('http://www.mydomain.com/url' -H 'mydomain.com')
curl "${args[@]}"
    
por 14.02.2017 / 22:22
1

Você parece ter uma citação extra no seu erro antes da palavra link que pode estar acionando o erro. Você deve tentar ecoar a string antes da execução para garantir que a sintaxe esteja correta.

"curl: (1) Protocol "'http" not supported or disabled in libcurl"
                     ^
    
por 14.02.2017 / 21:54