Bilder beschneiden and Bedingung gekoppelt

?

******

Hallo,

ich will ein Script basteln, dass den Dateinamen vor der Endung abtrennt (die Namen sehen so aus 0001.jpeg; 0002.jpeg usw.) und durch 2 teilt, ist es durch 2 teilbar wird die rechte Seite abgeschnitten, ist es nicht durch 2 teilbar die linke.
Dieses Script soll dann noch mit dem Script kombiniert werden was an ausnahmslos allen Bildern den unteren Rand abschneidet, dies sieht so aus und funktioniert auch schon:
Code:
for foto in *.jpeg ; do

convert $foto -crop 2480x3025 +repage $foto.jpeg        #es werden automatisch 2 Dateien erstellt *-0 und *-1 und 
                                                        #*-1 soll im nächsten Schritt gelöscht werden
rm $foto-1.jpeg

mv $foto-0.jpeg $foto


done


exit 0

hier das Script was noch nicht wirklich funktioniert, ich schaffe es nicht die Teilbarkeit zu überprüfen und dann weiter zu übergeben:
Code:
for foto in *.jpeg ; do

cut -d'.' -f1 $foto | $foto2



if  $Zahl = $(echo "/2" | bc )

then
convert $foto -crop 2130x3025 +repage $foto.jpeg            #rechts durch 2 teilbar

else
convert $foto -crop 2130x3025+365 +repage $foto.jpeg        #links nicht durch 2 teilbar

fi
rm $foto-1.jpeg
mv $foto-0.jpeg $foto



done

Hoffentlich hat jemand eine Anregung dazu ;)

Mfg
 
shell ist...?

angenommen sie ist bash, dann sollte man dir sagen: if abfragen macht man mit test
Code:
man test

das mit der teilbarkeit durch zwei kann man mit modulo überprüfen:
Code:
echo $((5 % 2)) # gibt 1 aus
echo $((6 % 2)) # gibt 0 aus
echo $((7 % 2)) # gibt 1 aus

und die dateinamen kann man per parameter-expansion "beschneiden":
Code:
file="0001.jpeg"
fileNum=${file%.jpeg}
echo $fileNum         # gibt 0001 aus
echo $((fileNum % 2)) # gibt 1 aus
und wenn du das in einer if-abfrage überprüfen willst, geht das zum beispiel so:
Code:
if [ $((fileNum % 2)) -eq 0 ]; then
    echo "$fileNum ist restlos durch 2 teilbar."
else 
    echo "$fileNum ist nicht restlos durch 2 teilbar."
fi

btw in dieser zeile:
Code:
if  $Zahl = $(echo "/2" | bc )
sind gleich zwei sachen sehr falsch: ersten die if abfrage (siehe oben) und zweitens: die bash ist sehr sensibel was leerzeichen angeht.
Code:
foo="bla"
geht, aber
Code:
foo = bla
geht nicht. (beziehungsweise versucht das programm "foo" mit den parametern "=" und "bla" zu starten. ich hab kein programm namens foo installiert, deswegen bekomme ich: bash: foo: command not found)
und wenn du keine bash hast und für die rechenoperation bc verwenden willst(/musst?), ginge das auch eher so:
Code:
num=5
if [ $(echo "$num % 2"|bc -q) -eq 1 ]; then echo "$num ist nicht restlos durch 2 teilbar."; fi
 
vielen Dank für deine Hilfe :)

ich werde mir alles genau anschauen und vernessern

Mfg
 

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

Crontab und Scripts - Problem

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

Zurück
Oben