Re: Bilddatei als Ressource im Script ablegen

Thomas Moritz <[email protected]> Thu, 30 Sep 2010 14:08:26 +0200
Newsgroups gmane.linux.suse.programming
Organization -
Message-ID <[email protected]>
Am Mittwoch, 29. September 2010 20:10:07 schrieb David Haller:

Hallo,
 
> >#!/bin/sh
> 
> Muß das /bin/sh, also portabel sein, oder darf's auch bash sein?
> (wobei zsh und ksh müßten das, was ich vorschlage, ebenfalls
> verarbeiten können.

Eigentlich sollte '#!/bin/bash' ausreichen!

> >#set -xv
> >trap "rm -f /dev/shm/thm____.____.png" SIGINT
> 
>                                         ^^^ das SIG-Präfix ist
> nicht portabel

Uuups, wieder was gelernt!

> Besser mit mktemp die Temporärdatei erzeugen:
> 
> RFILE=$(mktemp /dev/shm/thmXXXXXX.png)
> trap "rm -f $RFILE" HUP INT TERM EXIT

mktemp will die Extension definieren und nicht den basename!
echo "$SHELL"
/bin/bash
mktemp -V
mktemp (GNU coreutils) 7.1

Also:
RFILE=$(mktemp /dev/shm/mypng.XXXXXX)
Gut, dann muesste ich in composite wieder png: benutzen.

[***was anderes***]
Andererseits liegt seit dem letzten Kernelupdate _und_ dem 
anschliessenden Reboot noch ein suse-Schnipsel im shm :-(

initrd_exports.sh
----------------------------------------------------
declare -x HOME="/"
declare -x OLDPWD="/"
declare -x PATH="/sbin:/usr/sbin:/bin:/usr/bin"
declare -x PWD="/root"
declare -x ROOTFS_BLKDEV="/dev/disk/by-id/ata-WDC*-part6"
declare -x ROOTFS_FSCK="0"
declare -x ROOTFS_FSTYPE="ext4"
declare -x SHLVL="1"
declare -x TERM="linux"
declare -x splash="silent"
declare -x vga="0x317"
----------------------------------------------------

Wenn ich es nicht zufaellig gesehen haette, laege der beim naechsten 
Kernelupdate auch noch rum... (s2ram-Kiste).
[***was anderes***]

> Und beides evtl. innerhalb der Funktion.
> 
> >cd "$PWD"
> 
> Wozu das?

Ich springe vorsichtshalber zu meinem BaseDir :-)
Bei aufwendigen Sachen merke ich mir MYDIR="$PWD" und kann nach 
diversen Ausfluegen schnell wieder zur Basis zurueck. cd "$MYDIR"

> >echo "$RAHMEN" | uudecode -o - > "$RFILE"
> 
> Da hättest du nachgucken sollen, was die Option '-o' macht ;)

Hand an die Stirn klatsch! Es ist so augenscheinlich und trotzdem habe 
ich gepennt!
 
> >find -type f -name '*.[jJ][pP][gG]' | while read -r FILE; do
> 
> find -type f -iname '*.jpg' | while read -r FILE; do

-iname ...klar doch!
 
>     if ! echo "$FILE" | grep -q "__R.JPG$"; then
> 
> Aber sinnvoller ist glaub eh:
> 
>     case $FILE in
>         *__R.JPG) continue;;
>     esac
> 
> ODER
> 
>     if test "$FILE" = "${FILE%%__R.JPG}"; then

Beides gut, case gefaellt mir besser, da schnell und uebersichtlich 
erweiterbar.
 
> >    echo "Bearbeite $FILE"
> >    #Filenamen in Grossbuchstaben aendern
> >    UPPERFILE=`echo "$FILE" | tr '[[:lower:]]' '[[:upper:]]'`
> 
>     UPPERFILE="$(echo "$FILE" | tr '[[:lower:]]' '[[:upper:]]')"

Am Ergebnis aendert sich nichts. Worin liegt der Vorteil?

> >    if ! test -e "$UPPERFILE"; then
> >      mv "$FILE" "$UPPERFILE"
> >    fi
> 
> Was ist, wenn $UPPERFILE existiert?

Dann braucht $FILE nicht umbenannt zu werden und weiter geht's im 
Script.

> >    NEWFILE=`basename "$UPPERFILE" .JPG`"__R.JPG"
> 
>     NEWFILE="${UPPERFILE/%%.JPG}__R.JPG"

Noe, das will ich nicht!
UPPERFILE="ABC.JPG"
NEWFILE="${UPPERFILE/%%.JPG}__R.JPG"
echo "$NEWFILE"
ABC.JPG__R.JPG    <<<-----Noe!

> ># temporaeres PNG loeschen
> >rm -f "$RFILE"
> 
> Gleich mit von 'trap' erledigen lassen ;)

OK! 
Ich danke Dir vielmals fuer Deine Muehe!

MfG Th. Moritz