检查是否存在wget/curl

Joh*_*ams 4 linux shell

尝试使用wget下载文件的脚本,或者如果Linux中不存在wget则使用curl.如何让脚本检查是否存在wget?

pax*_*blo 9

Linux有一个which命令可以检查路径上是否存在可执行文件:

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

pax> which no_such_executable ; echo $?
1
Run Code Online (Sandbox Code Playgroud)

如您所见,它设置返回代码$?以轻松判断是否找到了可执行文件.


Suk*_*uku 8

wget http://download/url/file 2>/dev/null || curl -O  http://download/url/file
Run Code Online (Sandbox Code Playgroud)


Sat*_*bdi 5

还可以使用commandortypehash来检查 wget/curl 是否存在。这里的另一个线程 - “从 Bash 脚本检查程序是否存在”很好地回答了在 bash 脚本中使用什么来检查程序是否存在。

我会这样做 -

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
Run Code Online (Sandbox Code Playgroud)