我正在寻找一个简单的shell(+ curl)检查,如果URL存在(返回200),它将被评估为true或false.
Cha*_*ffy 106
使用--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
Run Code Online (Sandbox Code Playgroud)
如果您的服务器拒绝HEAD请求,则另一种方法是仅请求文件的第一个字节:
if curl --output /dev/null --silent --fail -r 0-0 "$url"; then
Run Code Online (Sandbox Code Playgroud)
ail*_*nlv 23
我发现wget比CURL更适合这个工具; 记住的选项较少,你可以在bash中检查它的真值,看它是否默认成功.
if wget --spider http://google.com 2>/dev/null; then
echo "File exists"
else
echo "File does not exist"
fi
Run Code Online (Sandbox Code Playgroud)
该--spider选项使wget只检查文件而不是下载它,并使2> /dev/nullwget的stderr输出静音.