A partir de man wget
, você pode ver que ele usa a convenção usual de valor de retorno do Unix - 0 significa que nenhum erro, qualquer outra coisa é um erro. Contanto que você não espere outros tipos de erros (por exemplo, falha na rede ou coisas assim), ou seja, você espera que, se não fizer o download de qualquer coisa, significa que não há arquivo, você pode usar algo assim:
get_tf_simulated() {
t=$1
if [ $t -lt 3 ]; then
f=$3
s=$((2 * $t))
if [ $f -lt $s ]; then
return 0
fi
fi
return 1
}
get_tf_real() {
tp=$2
fp=$4
inf=$5
ext=$6
# Get http://example.com/test<test number>/<image or file><file number>.<jpg or txt>
wget -Otest$tp_file$fp_$inf.$ext http://example.com/test$tp/$inf$fp.$ext
}
get_tf() {
echo --- Getting $*
get_tf_simulated $*
#get_tf_real $*
}
get_all() {
get_tf $t $tp $f $fp image jpg
ret_val=$?
if [ $ret_val -ne 0 ]; then
return $ret_val
fi
get_tf $t $tp $f $fp file txt
}
for t in {1..999}; do
tp='printf %3.3d $t'
got_one=no
for f in {1..9999}; do
fp='printf %4.4d $f'
get_all $t $tp $f $fp
if [ $? -ne 0 ]; then
echo Failed, going next
break
fi
got_one=yes
done
if [ $got_one == 'no' ]; then
echo Nothing more
break
fi
done
Descomente a linha direita na função get_all
. Atualmente, ele será simulado e a saída será assim (desde que você tenha salvo o acima para mkt.sh
):
$ ./mkt.sh
--- Getting 1 001 1 0001 image jpg
--- Getting 1 001 1 0001 file txt
--- Getting 1 001 2 0002 image jpg
Failed, going next
--- Getting 2 002 1 0001 image jpg
--- Getting 2 002 1 0001 file txt
--- Getting 2 002 2 0002 image jpg
--- Getting 2 002 2 0002 file txt
--- Getting 2 002 3 0003 image jpg
--- Getting 2 002 3 0003 file txt
--- Getting 2 002 4 0004 image jpg
Failed, going next
--- Getting 3 003 1 0001 image jpg
Failed, going next
Nothing more
Nota: eu não testei o wget
, mas você pode usar isso para testar em alguns arquivos:
wget -Otest$tp_file$fp_$inf.$ext http://example.com/test$tp/$inf$fp.$ext; echo $?
Basta substituir $tp
, $fp
, $inf
e $ext
, conforme necessário. por exemplo semelhante ao que você deu:
wget -Otest052_file0001_file.txt http://www.example.com/sub-somewhere052/file0001.txt; echo $?
Isso deve ecoar 8
para 404, do man wget
:
8 Server issued an error response.
Se isso funcionar, o script deve funcionar, esperando que não haja erros de digitação nessa linha. :)