Daran man wgetkö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_allFunktion. 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, $infund $extnach 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 8fü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. :)