Bei wget wird der Fehler "Schema fehlt" angezeigt

14

Ich habe ein kleines Skript geschrieben, das ein zufälliges Hintergrundbild von der Desktoppr- API abruft und mein Desktop-Hintergrundbild dahingehend ändert:

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

Wenn ich das Skript ausführe, wgetschlägt der abschließende Befehl mit dem Fehler fehl:

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

Wenn ich die URL direkt in den Befehl wget eingebe, wie folgt:

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

... Der Befehl wird korrekt ausgeführt und lädt das Bild herunter. Dies bedeutet, dass der Fehler aufgrund eines Problems in der Variablen auftritt.

Ich denke, dies hat möglicherweise etwas mit der jqBibliothek zu tun, mit der ich die JSON-Antwort von der Desktoprr-API analysiere.

Hussain Khalil
quelle

Antworten:

22

Sie müssen die Anführungszeichen um die URL entfernen, indem Sie beispielsweise die folgenden -rOptionen verwenden 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')

Derzeit führt der Befehl tatsächlich zu

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Florian Diesch
quelle
Bravo. Dieses Problem ließ mich die Tastatur zuschlagen. Vielen Dank!
Hussain Khalil