Obtenir l'erreur «Schéma manquant» avec wget


14

J'ai écrit un petit script qui récupère un fond d'écran aléatoire de l' API Desktoppr et y change mon fond d'écran:

#!/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 wgetcommande finale échoue avec l'erreur:

"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 dans la variable.

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

Réponses:


22

Vous devez supprimer les guillemets doubles entourant l'URL, par exemple en utilisant l' -roption pour 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 se traduit en fait par

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

Bravo. Ce problème m'a fait claquer le clavier. Merci!
Hussain Khalil
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.