如何检查shell是否存在URL并且可能卷曲?

时间:2012-08-30 14:22:01

标签: shell curl

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

2 个答案:

答案 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输出静音。