รับข้อผิดพลาด“ โครงการที่หายไป” กับ wget


14

ฉันเขียนสคริปต์เล็กน้อยที่คว้าภาพพื้นหลังแบบสุ่มจากDesktoppr API และเปลี่ยนภาพพื้นหลังเดสก์ทอปของฉันเป็น:

#!/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 จาก Desktoprr API

คำตอบ:


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

ไชโย ปัญหานี้ทำให้ฉันกระแทกแป้นพิมพ์ ขอบคุณ!
Hussain Khalil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.