Получение ошибки «Схема отсутствует» с помощью wget

14

Я написал небольшой скрипт, который берет случайные обои из API Desktoppr и заменяет их на обои рабочего стола:

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

Когда я запускаю скрипт, последняя wgetкоманда завершается с ошибкой:

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

Когда я помещаю URL-адрес непосредственно в команду wget, вот так:

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

... команда выполняется правильно и загружает образ, а это означает, что ошибка возникает из-за какой-то проблемы в переменной.

Я думаю, это может быть связано с jqбиблиотекой, которую я использую для анализа ответа JSON от API Desktoprr.

Хуссейн Халил
источник

Ответы:

22

Вам необходимо удалить двойные кавычки, окружающие URL, например, с помощью -rопции 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')

В настоящее время команда на самом деле приводит к

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Флориан Диш
источник
Браво. Эта проблема заставила меня хлопнуть клавиатурой. Благодарность!
Хуссейн Халил