shell - 如何通过 shell 脚本确定网页是否存在?

标签 shell unix

我正在尝试制作一个程序,可以将一系列漫画扫描转换为一个 pdf 文件,并且我不想尝试下载图片来确定我是否有正确的网址。是否有一个 shell 脚本命令可以用来检查网页是否存在?

最佳答案

在 *NIX 下,您可以使用 curl 发出简单的 HEAD 请求(HEAD 仅要求 header ,而不要求页面正文):

curl --head http://myurl/

那么你可以只取第一行,其中包含HTTP状态代码(200 OK,404 Not Found等):

curl -s --head http://myurl/ | head -n 1

然后检查您是否得到了适当的响应(状态代码为 200 或 3**):

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].."

如果状态代码正常,这将输出第一行,如果状态代码不正常,则不输出任何内容。您还可以将其通过管道传输到/dev/null 以获得无输出,并使用 $? 来确定它是否有效:

curl -s --head http://myurl/ | head -n 1 | grep "HTTP/1.[01] [23].." > /dev/null
# on success (page exists), $? will be 0; on failure (page does not exist or
# is unreachable), $? will be 1

编辑 -s 只是告诉 curl 不要显示“进度条”。

关于shell - 如何通过 shell 脚本确定网页是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2924422/

相关文章:

windows - 了解 cmd shell 中的变量

linux - 文件说它在那里,但它根本不在那里

java - 在Java中读取.Z文件(unix压缩文件)

python - 当 ctrl-C 不起作用时,终止由 vim 创建的 shell

shell - 使用 shell 将字节插入文件

shell - 如何制作单个 shell 脚本来激活多个命令?

python - conda 无法与 Fish shell 一起正常工作

linux - 在 Shell 脚本中读取 CSV 文件,直到没有标题的行尾

unix - 防止 rsync 删除与给定模式匹配的目标文件

linux shell搜索数字之间不出现的数字