[linux-l] shell skript probleme mit leerzeichen

Schlomo Schapiro belug at schlomo.schapiro.org
Sa Okt 29 21:09:56 CEST 2005


Hallo,

hier als kleine Anregung meine Version, genannt convert_picture_cd

#!/bin/bash
shopt -s nocaseglob nullglob
test $# -lt 2 && { echo Usage: $0 picture-dir target-dir ; exit ; }

trap 'test -e "$2/tmp.pnm" && rm -f "$2/tmp.pnm"' 0
test -d "$2" || mkdir -p "$2"
for k in "$1"/*.{jpg,jpeg} ; do 
        djpeg -scale 1/2  "$k" >"$2/tmp.pnm"
        echo -n "Converting $k "
        l="$(basename "$k")" 
        l="${l%.*}"
        cjpeg -smooth 10 <"$2"/tmp.pnm >"$2/$l".jpg
        echo -n "| "
        pnmrotate 90 <"$2"/tmp.pnm | cjpeg -smooth 10 >"$2/$l".left.jpg
        echo -n "\\ "
        pnmrotate -90 <"$2"/tmp.pnm | cjpeg -smooth 10 >"$2/$l".right.jpg
        echo "/"
done

Beachte die "" ueberall, die helfen bei den Leerzeichen.

PS: Wenn einer einen Trick kennt, der automatisch die Ausrichtung des 
Bildes erkennt - dann her damit !

PPS: Ja ich weiss, dass jpegtran lossless drehen kann...

On Thu, 27 Oct 2005, willek wrote:

> hi liste,
> ich bastele gerade an einen kleinen skript, das bilder umwandelt. ich
> habe Bildernamen mit leerzeichen drin, beispielsweise "test 3.jpg".
> Wie bringe ich dem skript bei, auch so was zu beachten?
> 
> oder genauer gefragt: wie bekomme ich eine Variable mit Leerzeichen hin?
> oder geht das, wie so oft, viel einfacher? Ich könnte iimage (Danke Sven
> für den Tipp) nehmen, hätte aber gerne was eigenes.
> 
> Danke für die Hilfe
> Lutz
> 
> $ ls -l
> -rw-r--r--  1 lutz lutz 2242273 2005-10-27 14:11 test1.jpg
> -rw-r--r--  1 lutz lutz 2401241 2005-10-27 14:11 test2.jpg
> -rw-r--r--  1 lutz lutz 3730762 2005-10-27 14:11 test 3.jpg
> -rw-r--r--  1 lutz lutz  297943 2005-10-27 14:11 test 4.jpg
> -rwxrwxr--  1 lutz lutz     352 2005-10-27 14:59 verkleinere
> 
> $ cat verkleinere
> #!/bin/bash
> # /usr/local/bin/verkleinere
> #
> # verkleinert Bilder im aktuellen Verzeichnis
> # auf 640x480 und speichert sie in Ordner
> # ./verkleinert unter dem angegebenen Suffix ab
> #
> # Aufruf: verkleinere <Dateiendung>
> mkdir verkleinert
> for i in `ls`; do
> basename=${i%.*}
> echo $i $basename.$1
> convert -resize 640x480 "$i" verkleinert/$basename.$1
> done
> 
> $ sh verkleinere png
> test1.jpg test1.png
> test2.jpg test2.png
> test test.png
> convert: unable to open image `test': Datei oder Verzeichnis nicht gefunden.
> convert: missing an image filename `verkleinert/test.png'.
> 3.jpg 3.png
> convert: unable to open image `3.jpg': Datei oder Verzeichnis nicht
> gefunden.
> convert: missing an image filename `verkleinert/3.png'.
> test test.png
> convert: unable to open image `test': Datei oder Verzeichnis nicht gefunden.
> convert: missing an image filename `verkleinert/test.png'.
> 4.jpg 4.png
> convert: unable to open image `4.jpg': Datei oder Verzeichnis nicht
> gefunden.
> convert: missing an image filename `verkleinert/4.png'.
> verkleinere verkleinere.png
> convert: Improper image header `verkleinere'.
> convert: missing an image filename `verkleinert/verkleinere.png'.
> verkleinert verkleinert.png
> convert: missing an image filename `verkleinert/verkleinert.png'.
> 
> $ ls -l
> -rw-r--r--  1 lutz lutz 2242273 2005-10-27 14:11 test1.jpg
> -rw-r--r--  1 lutz lutz 2401241 2005-10-27 14:11 test2.jpg
> -rw-r--r--  1 lutz lutz 3730762 2005-10-27 14:11 test 3.jpg
> -rw-r--r--  1 lutz lutz  297943 2005-10-27 14:11 test 4.jpg
> -rwxrwxr--  1 lutz lutz     352 2005-10-27 14:59 verkleinere
> drwxr-xr-x  2 lutz lutz     112 2005-10-27 15:00 verkleinert
> 
> $ ls -l ./verkleinert
> -rw-r--r--  1 lutz lutz 234774 2005-10-27 15:00 test1.png
> -rw-r--r--  1 lutz lutz 261262 2005-10-27 15:00 test2.png
> 
> 
> 
> _______________________________________________
> linux-l mailing list
> linux-l at mlists.in-berlin.de
> Die Mailingliste der BeLUG (Berliner Linux User Group)
> 
> Wenn du diese Mailingliste  abbestellen willst, gehe bitte auf
> https://mlists.in-berlin.de/mailman/listinfo/linux-l
> und trage dich dort bitte aus
> 

-- 
Regards,
Schlomo


Mehr Informationen über die Mailingliste linux-l