3 votos

¿Cómo ejecutar una sentencia curl de varias líneas desde un script en el terminal?

Estoy intentando ejecutar una sentencia curl que he copiado de Chrome DevTools. La declaración tiene un montón de parámetros de cabecera.

Si pego esto en una ventana de Terminal, funciona perfectamente.

Si pongo esto en un shell script, y ejecuto el script, cada línea se ejecuta como su propia sentencia, ignorando la barra invertida.

curl 'https://localhost' \
  -H 'authority: localhost' \
  -H 'accept: application/json, text/plain, */*' \
  -H 'accept-language: en-US,en;q=0.9' \
  -H 'referer: https://localhost' \
  -H 'sec-ch-ua: "Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'sec-fetch-dest: empty' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-site: same-origin' \
  -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36' \
  --compressed

¿Necesito anteponer el script con algo o invocarlo de una manera particular? No hago mucho shell scripting pero estoy seguro de que esto es fácil de responder para alguien.

3voto

kbosak Puntos 217

No puedo decir si el resultado de mi pregunta tiene múltiples causas, pero en mi caso, el problema se debió a los caracteres CRLF en mi script: Script with CRLF line endings - Incorrect

Pero deberían ser personajes de LF: Script with LF line endings - Correct

Estaba usando un editor Notepad++ que se ejecuta en una VM de Windows y, sin saberlo, las operaciones de copiar y pegar reintroducen los caracteres CRLF. Y a menudo uso una pestaña del editor para hacer varias operaciones antes de soltar el texto en mi script real.

Para evitar este problema:

  • Utilice un editor de texto en la máquina anfitriona.
  • Mostrar fin de línea (EOL) caracteres. Muchos editores, incluido el Bloc de notas++, tienen herramientas para cambiar entre los modos EOL. Pero es necesario saber qué es lo que está ¡presente!

Sugerencias específicas de Notepad++:

  1. Cambie los finales de línea por defecto a LF, yendo a Configuración -> Preferencias -> Nuevo Documento y cambie el Format(Line ending) a Unix (LF) : enter image description here

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X