Sie sind nicht angemeldet.

1

24.04.2007, 16:49

Fragen zu bash programmierung

Hallo zusammen,

ich möchte gerne mac tif bilder in jpg umwandeln das funktioniert ja gut mit convert unter linux.
die dateien sehen so aus Y035,11!18A_201+ra-13213 ohne datei endung.
so einfach funktioniert das mit dem convert befehl auch.

nun wollte ich ein script schreiben welches das mit vielen dateien macht.
so habe ich das gelöst:
#!/bin/bash

for i in `ls /scangwlb/*`
do
convert -quality 100 $i $i.jpg
echo $i done
done

nur leider bleibt er immer nach der ersten zeile stehen

habe es auch schon so versucht:
#!/bin/bash

for i in `ls /scangwlb/*`;
do
convert -quality 100 $i $i.jpg
echo $i done
done

das selbe, bin langsam am verzweifeln.

kann mir wer helfen??

2

24.04.2007, 17:08

RE: Fragen zu bash programmierung

Du befindest Dich ja nicht in dem Verzeichnis, wenn Du convert aufrufst, also findet er auch im aktuellen Verzeichnis die Dateien nicht..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

3

25.04.2007, 09:32

RE: Fragen zu bash programmierung

ok, und wie löse ich das schreibe ich vor den convert befehl den pfad noch mal??

4

25.04.2007, 09:41

RE: Fragen zu bash programmierung

Wenn das script in $PATH liegt, wechselst Du in das Verzeichnis, in dem die Images liegen und führst das Script dort aus.

Quellcode

1
2
3
4
5
6
7
#!/bin/bash

for i in `ls *`
do
convert -quality 100 $i $i.jpg
echo "$i done"
done
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »chieps« (25.04.2007, 09:42)


5

25.04.2007, 09:55

RE: Fragen zu bash programmierung

da ich in diesen sachen ein kleiner newbi bin. ist die frage jetzt wie trage ich das in $Path ein???

6

25.04.2007, 10:17

RE: Fragen zu bash programmierung

Du erstellst Dir am besten für eigene Scripte ein Verzeichnis bin in Deinem Homeverzeichnis und ergänzt in der ~/.bashrc die Variable PATH um den Eintrag ~/bin

Dort kannst Du dann Scripte reinlegen und kannst sie in jedem Verzeichnis nutzen..
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »chieps« (25.04.2007, 10:23)


7

25.04.2007, 10:22

RE: Fragen zu bash programmierung

danke. werde ich gleich mal testen

8

25.04.2007, 11:23

RE: Fragen zu bash programmierung

Das funktioniert so weit auch alles.

so habe jetzt was geändert nun bleibt er nach dem ersten befehl stehen
#!/bin/bash

for i in `ls *`
do
convert -quality 100 $i /scangwlb/tif/$i.jpg
echo $i done
done

will das convertierte Bild in einen anderen Ordner haben. aber so macht er nur das erste bild und alle anderen nicht.

9

25.04.2007, 11:28

RE: Fragen zu bash programmierung

Änder mal die Ausgabe, das done an dieser Stelle ist etwas unglücklich, packs ma in Anführungszeichen..

Quellcode

1
echo "$i done" 


Verzeichnisse, in die Du speichern willst, müssen auf jeden Fall existieren.. Und hart kodierte Pfade sind irgendwie auch nicht so dolle..

wenn Du vorher ein verzeichnis im aktuellen Verzeichnis anlegen lässt, wirds sauberer:

Quellcode

1
mkdir -p erledigt


und die Images lässt Du dann da rein schreiben:

Quellcode

1
convert -quality 100 $i ./erledigt/$i.jpg
Just because an OS holds 90% of the market doesn`t mean it`s superior.
Remember 90% of all animals are insects.

Wer sucht der findet..

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »chieps« (25.04.2007, 11:29)


10

25.04.2007, 11:40

RE: Fragen zu bash programmierung

habe ich so getan. das mit anlegen des verzeichnis in dem ordner wird schwierig weil die bilder von einer cd kommen.
aber habe erst mal ein paar in verzeichnis kopiert und das verzeichnis so angelegt wie du geschrieben hast: hier so sieht das jetzt aus bei mir

#!/bin/bash

for i in `ls *`
do
convert -quality 100 $i ./jpg/$i.jpg
echo "$i done"
done

verstehe ich nicht, müsste doch funktionieren.hmm....

habe jetzt mal das selbe echo vor dem convert geschrieben da sehe ich das er die nächste datei nimmt aber nichts passiert. also er bleibt dann sehen. und das kann ja nicht von bild zu bild länger dauern oder??

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »thebrain« (25.04.2007, 11:43)


11

25.04.2007, 11:58

RE: Fragen zu bash programmierung

es geht, nur irgendwie braucht er halt sehr lange. nach dem erstellen des ersten bildes.

12

25.04.2007, 12:58

RE: Fragen zu bash programmierung

so habe jetzt die schleife um ein weiteres convert erweitern weil er soll auch noch die bilder mit 50% qualität abspeichert. das erste funktioniert das, aber das andere bild macht er nicht. zumindestens speichert er das nicht in dem ordner ab.

#!/bin/bash

for i in `ls *`
do
echo "$i vor jpg 100%"
convert -quality 100$i /jpg/$i_100.jpg
echo "$i nach jpg 100% --> vor jpg 50%"
convert -quality 50 $i /jpg/$i_50.jpg
echo "$i nach jpg 50% --> naehste Datei"
done

wiso macht er das eine aber das andere danach nicht mehr???? was ist daran jetzt falsch oder müssen das zwei for schleifen dann sein??

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

13

25.04.2007, 18:26

RE: Fragen zu bash programmierung

sag mal, ist der pfad /jpg/bilddatei... richtig? du hast in deiner systemmroot ein verzeichnis /jpg in das du schreiben darfst?????
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

14

26.04.2007, 12:06

RE: Fragen zu bash programmierung

ja weil es ein test system ist

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

15

26.04.2007, 16:30

RE: Fragen zu bash programmierung

eine zweite schleife ist nicht notwendig. das script muss funktionieren.
in deinem script fehlt aber zwischen 100 und $i das leerzeichen.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Thema bewerten