Bắt lỗi Scheme thiếu lỗi lỗi với wget


14

Tôi đã viết một đoạn script lấy một hình nền ngẫu nhiên từ API Desktoppr và thay đổi hình nền máy tính của tôi thành nó:

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

Khi tôi chạy tập lệnh, wgetlệnh cuối cùng không thành công với lỗi:

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

Khi tôi đặt URL trực tiếp vào lệnh wget, như vậy:

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

... Lệnh thực thi chính xác và tải xuống hình ảnh, có nghĩa là lỗi xảy ra do một số vấn đề trong biến.

Tôi nghĩ rằng điều này có thể có liên quan đến jqthư viện mà tôi đang sử dụng để phân tích phản hồi JSON từ API Desktoprr.

Câu trả lời:


22

Bạn cần xóa dấu ngoặc kép xung quanh URL, ví dụ bằng cách sử dụng -rtùy chọn để 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')

Hiện tại lệnh thực sự có kết quả trong

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

Bravo. Vấn đề này đã làm tôi đập bàn phím. Cảm ơn!
Hussain Khalil
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.