Obtendo o erro “Scheme missing” com o wget

10

Eu escrevi um pequeno script que pega um papel de parede aleatório da API Desktoppr e altera meu papel de parede para ele:

#!/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 comando final wget falha com o erro:

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

Quando coloco a URL diretamente no comando wget, assim:

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

... o comando é executado corretamente e faz o download da 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 biblioteca jq que estou usando para analisar a resposta JSON de a API do Desktoprr.

    
por Hussain Khalil 16.04.2016 / 18:58

1 resposta

10

Você precisa remover as aspas duplas em torno do URL, por exemplo, usando a opção -r 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\""
    
por Florian Diesch 16.04.2016 / 19:08

Tags