Wget के साथ "स्कीम मिसिंग" त्रुटि हो रही है


14

मैंने एक छोटी सी स्क्रिप्ट लिखी थी, जो डेस्कटॉप एपीआई से एक यादृच्छिक वॉलपेपर पकड़ती है और मेरे डेस्कटॉप वॉलपेपर को उसमें बदल देती है:

#!/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लाइब्रेरी के साथ कुछ करना हो सकता है जिसका उपयोग मैं Desktoprr एपीआई से JSON प्रतिक्रिया को पार्स करने के लिए कर रहा हूं।

जवाबों:


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

वाहवाही। इस समस्या ने मुझे कीबोर्ड को मार दिया था। धन्यवाद!
हुसैन खलील
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.