Obteniendo el error "Scheme missing" con wget


14

Escribí un pequeño script que toma un fondo de pantalla aleatorio de la API de Desktoppr y cambia mi fondo de escritorio:

#!/bin/bash
url=$(curl 'https://api.desktoppr.co/1/wallpapers?page='$(shuf -i 1-1000 -n 1) | jq ".response[].image.url" | sed $(shuf -i 1-20 -n 1)'!d') &&
wget "$url"

Cuando ejecuto el script, el wgetcomando final falla con el error:

"http://a.desktopprassets.com/wallpapers/...jpg": Scheme missing.

Cuando pongo la URL directamente en el comando wget, así:

wget "http://a.desktopprassets.com/wallpapers/...jpg"

... el comando se ejecuta correctamente y descarga la imagen, lo que significa que el error ocurre debido a algún problema en la variable.

Creo que esto podría tener algo que ver con la jqbiblioteca que estoy usando para analizar la respuesta JSON de la API Desktoprr.

Respuestas:


22

Debe eliminar las comillas dobles que rodean la URL, por ejemplo, utilizando la -ropción para jq:

url=$(curl 'https://api.desktoppr.co/1/wallpapers?page='$(shuf -i 1-1000 -n 1) | jq -r ".response[].image.url" | sed $(shuf -i 1-20 -n 1)'!d')

Actualmente el comando en realidad resulta en

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""

Bravo. Este problema me hizo golpear el teclado. ¡Gracias!
Hussain Khalil
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.