Quiero ejecutar un comando curl en zsh.
curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE>" \
-H "Content-Type:application/json" \
-H "Authorization: Bearer <TOKEN>"
pero cuando ejecuto esto me sale
{"success":false,"errors":[{"code":9106,"message":"Missing X-Auth-Email header"},{"code":9107,"message":"Missing X-Auth-Key header"}],"messages":[],"result":null}curl: (3) URL using bad/illegal format or missing URL
zsh: command not found: -H
zsh: command not found: -H
Además de la respuesta de error. ¿Por qué me sale que significa que se ignora zsh: command not found: -H
la opción ?-H
Respuesta1
Cada uno \
en su código escapa a un carácter de espacio que sigue. Los espacios escapados se comportan como espacios entre comillas. No solo tu código genera palabras que son espacios (y no quieres estas palabras). Las barras invertidas escapan de los espacios, por lo que no escapan de los caracteres de nueva línea. De hecho, su código consta de tres comandos separados; dos de ellos comienzan con -H
y no tienen sentido. Como si corrieras:
curl -X GET "https://api.cloudflare.com/client/v4/zones/<ZONE>" ' '
-H "Content-Type:application/json" ' '
-H "Authorization: Bearer <TOKEN>"
Aquí los espacios se citan, en su código se escapan. El resultado es idéntico.
Para continuar un comando en la siguiente línea, debe escapar el carácter de nueva línea.
Elimina los espacios después de \
los caracteres. Cada una de sus dos barras invertidas debe ocurririnmediatamenteantes del respectivo carácter de nueva línea. Entonces las tres líneas se interpretarán como un solo comando.
Esto no es específico de zsh
.