我正在寻找一个简单的 shell (+curl) 检查,如果 URL 存在(返回 200)或不存在,它将评估为真或假。
问问题
75713 次
2 回答
150
使用--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
于 2012-08-30T14:24:33.077 回答
38
我发现 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 输出静音。
于 2015-04-24T22:52:21.193 回答