使用 wget 出现“方案丢失”错误

Hus*_*lil 15 bash wget

我写了一个小脚本,它从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"
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,最终wget命令失败并显示错误:

"http://a.desktopprassets.com/wallpapers/...jpg": Scheme missing.
Run Code Online (Sandbox Code Playgroud)

当我将 URL 直接放入 wget 命令时,如下所示:

wget "http://a.desktopprassets.com/wallpapers/...jpg"
Run Code Online (Sandbox Code Playgroud)

...命令正确执行并下载图像,这意味着由于变量中的某些问题而发生错误。

我认为这可能与jq我用来解析来自 Desktoprr API 的 JSON 响应的库有关。

Flo*_*sch 26

您需要删除 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')
Run Code Online (Sandbox Code Playgroud)

目前该命令实际上导致

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Run Code Online (Sandbox Code Playgroud)