Daran man wget
können Sie erkennen, dass die übliche Unix-Rückgabewertkonvention verwendet wird - 0 bedeutet keinen Fehler, alles andere ist ein Fehler. Vorausgesetzt, Sie erwarten keine anderen Arten von Fehlern (z. B. Netzwerkfehler oder ähnliches), dh Sie erwarten, dass Sie Folgendes verwenden können, wenn nichts heruntergeladen wird, was bedeutet, dass keine Datei vorhanden ist:
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
Kommentieren Sie die richtige Zeile in get_all
Funktion. Derzeit wird es simuliert und die Ausgabe sieht folgendermaßen aus (vorausgesetzt, Sie haben das oben Gesagte in gespeichert 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
Hinweis: Ich habe das nicht getestet wget
, aber Sie können dies verwenden, um einige Dateien zu testen:
wget -Otest$tp_file$fp_$inf.$ext http://example.com/test$tp/$inf$fp.$ext; echo $?
Ersetzen Sie einfach $tp
, $fp
, $inf
und $ext
nach Bedarf, zB für ähnliches Beispiel zu dem, was Sie haben:
wget -Otest052_file0001_file.txt http://www.example.com/sub-somewhere052/file0001.txt; echo $?
Dies sollte 8
für 404 aus dem Echo man wget
:
8 Server issued an error response.
Wenn dies funktioniert, sollte das Skript funktionieren und hoffen, dass in dieser einen Zeile keine Tippfehler enthalten sind. :)