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.

Hussain Khalil
la source

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\""
Florian Diesch
la source
Bravo. Ce problème m'a fait claquer le clavier. Merci!
Hussain Khalil