Mendapatkan kesalahan "Skema hilang" dengan wget

14

Saya menulis sebuah skrip kecil yang mengambil wallpaper acak dari Desktoppr API dan mengubah wallpaper desktop saya menjadi:

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

Ketika saya menjalankan skrip, wgetperintah terakhir gagal dengan kesalahan:

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

Ketika saya menempatkan URL langsung ke perintah wget, seperti:

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

... perintah dijalankan dengan benar dan mengunduh gambar, yang berarti bahwa kesalahan terjadi karena beberapa masalah dalam variabel.

Saya pikir ini mungkin ada hubungannya dengan jqperpustakaan yang saya gunakan untuk mem-parse respons JSON dari API Desktoprr.

Hussain Khalil
sumber

Jawaban:

22

Anda perlu menghapus tanda kutip ganda di sekitar URL, misalnya dengan menggunakan -ropsi untuk 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')

Saat ini perintah tersebut benar-benar menghasilkan

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Florian Diesch
sumber
Bravo. Masalah ini membuat saya membanting keyboard. Terima kasih!
Hussain Khalil