wgetで「Scheme missing」エラーを取得する


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これは、Desktoprr APIからのJSON応答を解析するために使用しているライブラリと関係があると思います。

回答:


22

たとえば、次の-rオプションを使用して、URLを囲む二重引用符を削除する必要があります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\""

ブラボー この問題により、キーボードをバタンと閉めた。ありがとう!
フセインハリル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.