Estoy tratando de usar curl en bash para descargar una página web, pero el &
símbolo en la URL no se interpreta como un carácter como me gustaría. ¿Alguna idea sobre cómo puedo convencer a bash de que el símbolo &
es solo un personaje aburrido y nada especial?
98
&
símbolo con\&
,'&'
,"&"
,^&
pero no han sido capaces de obtener la URL para evaluar correctamente. En realidad,'&'
funciona cuando ejecuto el comando curl desde Terminal.app, pero falla cuando lo coloco en un script bash, lo envuelvo en un bucle y lo ejecuto.Respuestas:
Poner la URL completa entre comillas dobles debería solucionar su problema.
fuente
${i}
no devuelve un valor.¿Está utilizando & como delimitador para una URL GET? ¿O está en un dato?
Si está en datos, debe codificarlo en un carácter HTML, si no, entre comillas.
La codificación para
&
debería estar%26
en la URL.fuente
&
símbolo como un dato, casi exactamente como lo ha mostrado. El problema es que, en lugar de valores numéricos, estoy usando${i}
. Entonces quiero llegarhttp://www.example.com?m=method&args=${i}
a evaluar como una URL.Poner comillas simples alrededor del
&
símbolo parece funcionar. Es decir, usar una URL comohttp://www.example.com/page.asp?arg1=${i}'&'arg2=${j}
curl devuelve la página web solicitada.fuente
En lugar de probar los caracteres de escape "&", puede especificar parámetros de URL http en solicitudes POST con el parámetro -d como se muestra a continuación:
Si la solicitud es GET, también debe agregar la opción -G, que le dice a curl que envíe los datos con la solicitud GET.
fuente
Puede utilizar
%26
en su lugar&
. El código de entidad funcionará bien.fuente
Usar el parámetro
--url
con comillas dobles funcionó para mífuente