Salta a série no download em lote com o wget em um script bash

0

Como posso pular uma pasta em um script bash usando o wget para baixar arquivos em lote, se o último arquivo verificado não existir?

Aqui está o código de amostra:

#!/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

Está baixando apenas o primeiro arquivo. Alguém pode ajudar?

    
por David Borges 21.02.2016 / 21:38

1 resposta

0

Para permitir que você marque esta pergunta como "resolvida", aqui está a resposta do meu comentário:

Sua consulta

if [ $? -eq 0 ]

está verificando um status de saída de 0 , que significa "Nenhum problema ocorreu" (de acordo com man wget , seção SAIR DE ESTADO). Assim, invertendo a consulta if para

if [ $? -ne 0 ]

i.e. "qualquer problema ocorreu" resolverá o problema.

Um status de saída de 0 é o padrão para a execução bem-sucedida de um comando.

A consulta if pode ser reduzida usando o operador bash || , que verificará se a finalização do comando foi malsucedida:

wget -r $base1$i'/'$s'.tiff' || break
    
por 22.02.2016 / 09:59

Tags