ubuntuusers.de

bash; skript zum donwload von bildern

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

sebastian1994

Anmeldungsdatum:
17. August 2008

Beiträge: 238

Hallo liebes Forum;

ich hab ein kleines Problem mit einem skript. Dies soll Bilder von einer Bildergallerie im Internet herunterladen; der link dorthin ist wie folgt aufgebaut: "linkzurgallierie"bildnummer"picture.jpg sollte eigentlich kein Problem sein. Ich habe hier ein skript probiert:

#!/bin/bash
echo "geben sie den Gallierielink ein "
read link
echo "bitte geben die die Anzahl der Bilder ein"
read $anzahl
echo $link >> /tmp/link1
nummer=1
cp /tmp/link1 /tmp/link2
while ( $anzahl!=5 )
do
echo $nummer >>/tmp/link1
echo picture.jpg >> /tmp/link1
wget $(cat ./tmp/link1)
rm /tmp/link1
cp /tmp/link2 /tmp/link1
$nummer= `expr $nummer + 1`
done 
echo "fertig"

Hier wird der Link eingegeben und 2 Dateien mit dem Link in den tmp Speicher gespeichert; link1 und link2; link2 ist der Gallierielink; und link1 wird immer umgeändert mit Bildnummer etc. und dann am Ende gelöscht und link2 als link1 kopiert .So; jetzt funktioniert aber die Bedingung nicht, sowie das aufwärtszählen von $nummer; was ich eigentlich nicht verstehe, da in einem anderen Skript das so 1:1 funktioniert....(damals noch karmic) . Und der link ist am Ende fehlerhaft; da zwischen Gallierielink und Bildnummer sowie zw Bildnummer und picture.jpg ein Leerzeichen gesetzt wird; die da nciht hingehört. habt ihr eine Idee?

Liebe grüße

Sebastian 1994

PS: MIt Besitzer abgesprochen; es gibt keine Urheberrechtsverletzung....

Vain

Avatar von Vain

Anmeldungsdatum:
12. April 2008

Beiträge: 2505

Hi,

hm, da stimmen irgendwie viele Sachen nicht. Fängt an bei read $anzahl, wo das Dollar-Zeichen fehl am Platze ist, über die while-Schleife, die $anzahl statt $nummer abfragt, bis zur Zeile mit expr oder dem Lesen aus ./tmp/... statt /tmp/.... Nicht bös' gemeint, aber schau doch nochmal in die gängige Literatur rein – tracks Leseliste und dort insbesondere den Wiki-Guide für Anfänger kann ich da nur empfehlen.

Was dein Skript angeht, habe ich mal versucht, das zu vereinfachen. ☺

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

echo "Geben Sie den Galerielink ein:"
read -r link
echo "Bitte geben Sie die Anzahl der Bilder ein:"
read anzahl

for (( i = 1; i <= anzahl; i++ ))
do
	wget "${link}${i}picture.jpg"
done

So eine for-Schleife macht das Leben einfacher, da man direkt sieht, was wie hochgezählt wird. (Dieses Konstrukt ist aber eine Bash-Besonderheit, die du vorallem in der sh nicht hast.) Außerdem siehst du, wie du "Strings" zusammenbauen kannst. Dann brauchst du die vielen Dateien nicht.

So könnte dann ein Ablauf aussehen:

Geben Sie den Gallierielink ein:
http://localhost/
Bitte geben Sie die Anzahl der Bilder ein:
10
wget http://localhost/1picture.jpg
wget http://localhost/2picture.jpg
wget http://localhost/3picture.jpg
wget http://localhost/4picture.jpg
wget http://localhost/5picture.jpg
wget http://localhost/6picture.jpg
wget http://localhost/7picture.jpg
wget http://localhost/8picture.jpg
wget http://localhost/9picture.jpg
wget http://localhost/10picture.jpg

HTH. ☺

sebastian1994

(Themenstarter)

Anmeldungsdatum:
17. August 2008

Beiträge: 238

OK; vielen Dank...ich hab wohl ncoh viel zu lernen....

hab ich gleich was in der nächsten Zeit zu tun. 😉 damit ich nicht mehr so dumme Fragen stelle

Danke.

Grüße

Sebastian1994

fnordschrat

Anmeldungsdatum:
17. Oktober 2007

Beiträge: 562

Falls das Skript nur Mittel zum Zweck ist, kann man sich das auch einfacher machen:

curl -O "http://localhost/[1-10]picture.jpg"

😉

Antworten |