在 bash 脚本中使用 wget 批量下载跳过系列

在 bash 脚本中使用 wget 批量下载跳过系列

如果最后检查的文件不存在,如何使用 wget 跳过 bash 脚本中的文件夹来批量下载文件?

这是示例代码:

#!/bin/bash
# Script to download Reports @ brazil.crl.edu/bsd/bsd
# Url : start @ http://brazil.crl.edu/bsd/bsd/u2038/ ends: /u2176
# There are less than 1000 files per address.
base1='http://brazil.crl.edu/bsd/bsd/u'
for i in {2038..2176};do 
    for s in {000001..001000}; do
        wget -r $base1$i'/'$s'.tiff'
        if [ $? -eq 0 ]; then
            break
        fi
    done
done

它只下载第一个文件。有人可以帮忙吗?

答案1

为了使您能够将此问题标记为“已解决”,这里是我的评论的答案:

您的查询

if [ $? -eq 0 ]

正在检查 的退出状态0,它代表“没有发生问题”(根据 的man wget退出状态部分)。因此将 if 查询反转为

if [ $? -ne 0 ]

即“发生任何问题”将解决该问题。

退出状态0是成功执行命令的标准。

bash可以使用's 运算符来减少 if 查询||,该运算符将检查命令终止是否成功:

wget -r $base1$i'/'$s'.tiff' || break

相关内容