Getting "Scheme missing" error with wget

83,734

You need to remove the double quotes surrounding the URL, for example by using the -r option to 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')

Currently the command actually results in

wget "\"http://a.desktopprassets.com/wallpapers/...jpg\""
Share:
83,734

Related videos on Youtube

Hussain Khalil
Author by

Hussain Khalil

Updated on September 18, 2022

Comments

  • Hussain Khalil
    Hussain Khalil over 1 year

    I wrote a little script that grabs a random wallpaper from the Desktoppr API and changes my desktop wallpaper to it:

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

    When I run the script, the final wget command fails with the error:

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

    When I put the URL directly into the wget command, like so:

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

    ... the command executes correctly and downloads the image, meaning that the error occurs because of some problem in the variable.

    I think this might have something to do with the jq library that I am using to parse the JSON response from the Desktoprr API.

  • Hussain Khalil
    Hussain Khalil about 8 years
    Bravo. This problem had me slamming the keyboard. Thanks!