我正在编写一个程序,它使用 Linux 命令来检查本地服务器上是否存在文件。
该程序使用提供的参数执行命令
ls *ARG_GOES_HERE* &> /dev/null
然后检查状态是否能够找到该文件。
问题是有时文件不是像这样的直接路径
/var/www/html/images/myImage.jpg
有时图像位置是使用网络位置存储的
http://192.168.1.2/images/myImage.jpg
在 linux 命令中失败。
是否可以使用 bash 检查本地 apache 位置是否存在图像?
答案1
您可以使用curl
命令检查文件是否存在并且可以通过 HTTP 访问。像这样的东西应该适合你:
path_to_file=images/myImage.jpg
if curl --head --location --silent --fail "http://192.168.1.2/$path_to_file" > /dev/null
then
printf "%s exists\n" "$path_to_file"
else
printf "%s does not exist\n" "$path_to_file"
fi
curl
使用以下选项:
--head
– 仅获取 HTTP 标头(不需要正文)--location
– 遵循任何 HTTP 重定向--silent
– 不显示进度表或错误消息--fail
–curl
如果 HTTP 请求失败,则命令会失败并显示错误状态,例如,如果 Web 服务器响应 404,则命令会curl
以状态 22(错误)而不是 0(成功)退出。