Ottenere l'errore "Schema mancante" con wget


14

Ho scritto un piccolo script che prende uno sfondo casuale dall'API Desktoppr e cambia lo sfondo del desktop in esso:

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

Quando eseguo lo script, il wgetcomando finale non riesce con l'errore:

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

Quando inserisco l'URL direttamente nel comando wget, in questo modo:

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

... il comando viene eseguito correttamente e scarica l'immagine, il che significa che l'errore si verifica a causa di qualche problema nella variabile.

Penso che questo potrebbe avere qualcosa a che fare con la jqlibreria che sto usando per analizzare la risposta JSON dall'API Desktoprr.

Risposte:


22

Devi rimuovere le doppie virgolette che circondano l'URL, ad esempio usando l' -ropzione per 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')

Attualmente il comando risulta effettivamente

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

Bravo. Questo problema mi ha fatto sbattere la tastiera. Grazie!
Hussain Khalil,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.