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.

Hussain Khalil
fuente

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\""
Florian Diesch
fuente
Bravo. Este problema me hizo golpear el teclado. ¡Gracias!
Hussain Khalil