简体   繁体   中英

Check for existence of wget/curl

Trying to do a script to download a file using wget, or curl if wget doesn't exist in Linux. How do I have the script check for existence of wget?

Linux has a which command which will check for the existence of an executable on your path:

pax> which ls ; echo $?
/bin/ls
0

pax> which no_such_executable ; echo $?
1

As you can see, it sets the return code $? to easily tell if the executable was found.

wget http://download/url/file 2>/dev/null || curl -O  http://download/url/file

One can also use command or type or hash to check if wget/curl exists or not. Another thread here - " Check if a program exists from a Bash script " answers very nicely what to use in a bash script to check if a program exists.

I would do this -

if [ ! -x /usr/bin/wget ] ; then
    # some extra check if wget is not installed at the usual place                                                                           
    command -v wget >/dev/null 2>&1 || { echo >&2 "Please install wget or set it in your path. Aborting."; exit 1; }
fi

First thing to do is try install to install wget with your usual package management system,. It should tell you if already installed;

yum -y wget

Otherwise just launch a command like below

wget http://download/url/file 

If you receive no error, then its ok.

A solution taken from the K3S install script (https://raw.githubusercontent.com/rancher/k3s/master/install.sh )

function download {
    url=$1
    filename=$2

    if [ -x "$(which wget)" ] ; then
        wget -q $url -O $2
    elif [ -x "$(which curl)" ]; then
        curl -o $2 -sfL $url
    else
        echo "Could not find curl or wget, please install one." >&2
    fi
}
# to use in the script:
download https://url /local/path/to/download

Explanation: It looks for the location of wget and checks for a file to exist there, if so, it does a script-friendly (ie quiet) download. If wget isn't found, it tries curl in a similarly script-friendly way.

(Note that the question doesn't specify BASH however my answer assumes it.)

Simply run

wget http://download/url/file 

you will see the statistics whether the endpoint is available or not.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM