Obtendo o erro "Esquema ausente" com o wget

14

Escrevi um pequeno script que pega um papel de parede aleatório da API Desktoppr e altera meu papel de parede:

#!/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 executo o script, o wgetcomando final falha com o erro:

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

Quando eu coloco a URL diretamente no comando wget, é assim:

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

... o comando é executado corretamente e baixa a imagem, o que significa que o erro ocorre devido a algum problema na variável.

Acho que isso pode ter algo a ver com a jqbiblioteca que estou usando para analisar a resposta JSON da API Desktoprr.

Hussain Khalil
fonte

Respostas:

22

Você precisa remover as aspas duplas ao redor do URL, por exemplo, usando a -ropção para 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')

Atualmente, o comando realmente resulta em

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Florian Diesch
fonte
Bravo. Esse problema me fez bater o teclado. Obrigado!
Hussain Khalil