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%26en 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
%26en su lugar&. El código de entidad funcionará bien.fuente
Usar el parámetro
--urlcon comillas dobles funcionó para mífuente