Bash循环条件集成错误判断:实现文件下载遇404时停止
批量下载文件并在遇到404时终止while循环
方法1:下载后检查wget退出码
直接执行下载操作,通过判断wget的退出状态终止循环——wget遇到404错误时会返回退出码8(对应服务器返回错误响应)。
i=1 while true; do target_file="file${i}.txt" wget "http://your-target-site/${target_file}" # 检查上一条wget命令的退出码 if [ $? -eq 8 ]; then # 清理可能生成的404错误页面文件 rm -f "${target_file}" break fi i=$((i + 1)) done
方法2:先检查文件存在性再下载
如果不想浪费带宽下载不存在的文件,可以用--spider参数让wget只探测文件是否存在,确认存在后再执行下载:
i=1 # 当spider探测成功(文件存在)时,进入循环体执行下载 while wget --spider "http://your-target-site/file${i}.txt" 2>/dev/null; do wget "http://your-target-site/file${i}.txt" i=$((i + 1)) done
注意事项
- 不同版本wget的退出码可能略有差异,可通过
man wget查看本地wget的退出码说明,确认404对应的状态值 - 如果目标网站有反爬机制,可能需要给wget添加
--user-agent、--cookie等参数模拟正常请求
内容的提问来源于stack exchange,提问作者IceCode
相关产品推荐
相关产品推荐

