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