web-dev-qa-db-fra.com

Obtenir l'erreur "Scheme manquant" avec wget

J'ai écrit un petit script qui saisit un papier peint au hasard à partir de l'API Desktoppr et le remplace par le papier peint de mon bureau:

#!/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"

Lorsque j'exécute le script, la dernière commande wget échoue avec l'erreur suivante:

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

Quand je mets l'URL directement dans la commande wget, comme ceci:

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

... la commande s'exécute correctement et télécharge l'image, ce qui signifie que l'erreur se produit en raison d'un problème lié à la variable.

Je pense que cela pourrait avoir quelque chose à voir avec la bibliothèque jq que j'utilise pour analyser la réponse JSON à partir de l'API Desktoprr.

12
Hussain Khalil

Vous devez supprimer les guillemets entourant l'URL, par exemple, à l'aide de l'option -r to 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')

Actuellement, la commande résulte en

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