Fehlermeldung "Schema fehlt" mit wget

10

Ich habe ein kleines Skript geschrieben, das ein zufälliges Hintergrundbild von der Desktoppr API erfasst und mein Desktop-Hintergrundbild darauf ä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"

Beim Ausführen des Skripts schlägt der letzte Befehl wget mit dem Fehler fehl:

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

Wenn ich die URL direkt in den wget-Befehl lege, so:

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

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

Ich denke, das könnte etwas mit der jq Bibliothek zu tun haben, mit der ich die JSON-Antwort analysiere die Desktoprr API.

    
Hussain Khalil 16.04.2016, 18:58

1 Antwort

10

Sie müssen die doppelten Anführungszeichen entfernen, die die URL umgeben, z. B. indem Sie die Option -r für jq :

verwenden
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 16.04.2016, 19:08

Tags und Links