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.
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\""