Estou tentando usar curl no bash para baixar uma página da Web, mas o &
símbolo na URL não é interpretado como um caractere como eu gostaria. Alguma ideia de como posso convencer o bash de que o símbolo &
é apenas um personagem chato e nada de especial?
97
&
símbolo com\&
,'&'
,"&"
,^&
mas não foram capazes de obter o URL para avaliar corretamente. Na verdade,'&'
funciona quando executo o comando curl do Terminal.app, mas falha quando o coloco em um script bash, envolvo em um loop e o executo.Respostas:
Colocar todo o URL entre aspas duplas deve resolver o seu problema.
fonte
${i}
não retorna um valor.Você está usando o & como delimitador para um URL GET? Ou está em um dado?
Se estiver em dados, você deve codificá-lo para um caractere HTML, caso contrário, coloque-o entre aspas.
A codificação para
&
deve se tornar%26
no URL.fonte
&
símbolo como um dado, quase exatamente como você mostrou. O problema é que, em vez de valores numéricos, estou usando${i}
. Então, eu querohttp://www.example.com?m=method&args=${i}
avaliar como um URL.Colocar aspas simples ao redor do
&
símbolo parece funcionar. Ou seja, usar uma URL comohttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
curl retorna a página da web solicitada.fonte
Em vez de tentar os caracteres de escape "&", você pode especificar parâmetros de url http em solicitações POST com o parâmetro -d conforme mostrado abaixo:
Se a solicitação for um GET, você também deve adicionar a opção -G, que diz ao curl para enviar os dados com a solicitação GET.
fonte
Você pode usar em seu
%26
lugar&
. O código da entidade funcionará bem.fonte
Use o parâmetro
--url
com aspas duplas funcionou para mimfonte