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.

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

Bravo. Dieses Problem ließ mich die Tastatur zuschlagen. Vielen Dank!
Hussain Khalil
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.