我正在寻找一个简单的shell(+ curl)检查,如果URL存在(返回200),它将被评估为true或false。
答案 0 :(得分:96)
使用--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
答案 1 :(得分:18)
我发现wget比CURL更适合这个工具;记住的选项较少,你可以在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输出静音。