如何检查一个URL是否存在与shell可能curl?

我正在寻找一个简单的shell(+curl)检查,如果URL存在(返回200),则评估为true或false。

使用--fail会使失败的请求退出状态非零。 使用--head将避免下载文件内容,因为我们不需要这个检查。 使用--silent将避免由检查本身发出状态或错误。

 if curl --output /dev/null --silent --head --fail "$url"; then echo "URL exists: $url" else echo "URL does not exist: $url" fi 

如果您的服务器拒绝HEAD请求,另一种方法是只请求文件的第一个字节:

 if curl --output /dev/null --silent --fail -r 0-0 "$url"; then 

我觉得wget是比CURL更好的工具。 有更less的选项要记住,你可以在bash中真正检查它的真值,看看它是否成功。

 if wget --spider http://google.com 2>/dev/null; then echo "File exists" else echo "File does not exist" fi 

--spider选项使wget只是检查文件,而不是下载文件, 2> /dev/null沉默wget的stderr输出。