Hallo,
Am 27.04.2012 11:41, schrieb Philipp Kraus:
> Da aber nun doch recht viele weitere Parameter hinzu kommen ...
> Wie verarbeitet man eine solche Parameterliste am besten in einem
> Bashscript?
Eine Möglichkeit ist in einer Schleife mit case auf $1 unterscheiden und
dann shiften, wenn $1 leer ausbrechen ... Ausschnitt:
while true
do
case "$1" in
-6) MONTAGE="6X";;
-8) MONTAGE="8X";;
-gamma) shift
OPTIONS="$OPTIONS -gamma $1" ;;
-?) echo "Benutzung von $0"
echo "$0 [OPTIONS] Eingabedatei [Ausgabedatei]"
echo "Optionen:"
echo " [-6|-8] Anzahl der Kacheln 6 oder 8 (ist Vorgabe)"
echo " [-gamma FLOAT] Gamma-Korrektur"
;;
-*) OPTIONS="$OPTIONS $1" ;;
*) break ;;
esac
shift
done
Der komplette Bleistift mit Parameterweitwurf:................
#/bin/bash
#
# pass2foto.sh
#
# created 04.07.2008, ubs
# last update 05.07.2008, ubs
#
echo
echo "*******************************************"
echo "* Passbild für Foto-Kiosk vorbereiten ... *"
echo "*******************************************"
echo
# ---------------------------------------
# Bildqualität:
#
OPTIONS="-quality 100"
#
# ---------------------------------------
# Weitere Optionen:
MONTAGE="8X" # Vorgabe 4 x 2 = 8 Bilder
while true
do
case "$1" in
-6) MONTAGE="6X";;
-8) MONTAGE="8X";;
-gamma) shift
OPTIONS="$OPTIONS -gamma $1" ;;
-?) echo "Benutzung von $0"
echo "$0 [OPTIONS] Eingabedatei [Ausgabedatei]"
echo "Optionen:"
echo " [-6|-8] Anzahl der Kacheln 6 oder 8 (ist Vorgabe)"
echo " [-gamma FLOAT] Gamma-Korrektur"
;;
-*) OPTIONS="$OPTIONS $1" ;;
*) break ;;
esac
shift
done
# echo "Montage: $MONTAGE"
echo "Kacheln ($MONTAGE) von Passfotos auf ein 10 x 15 cm Bild mit 600 dpi"
if [ $# -eq 0 ]
then
echo "Mindestens die Eingabedatei muß angegeben werden!"
echo " "
echo "$0 [OPTIONS] Eingabedatei [Ausgabedatei]"
echo "Optionen:"
echo " [-6|-8] Anzahl der Kacheln 6 oder 8 (ist Vorgabe)"
echo " [-gamma FLOAT] Gamma-Korrektur"
exit
fi
infile="$1"
if [ $# -eq 2 ]
then
outfile="$2"
echo "Name der Ausgabedatei wurde übergeben ($outfile)."
else
outfile="10x15cm.jpg"
echo "Name der Ausgabedatei wurde nicht angegeben."
fi
echo
echo "Eingabedatei -> $infile"
echo "Ausgabedatei -> $outfile"
echo
# ---------------------------------------
# Abmessungen in Pixel:.
#
# Passbild (Hochformat)
# Metrisch 35 x 45 mm
# Points (1/72 Inch) 99 x 128 pts
# Pixel (600 dpi) 827 x 1063 px
#
# Foto (Querformat)
# Originalformat 4 x 6 Zoll
# Metrisch 15 x 10 cm
# Points 432 x 288 pts
# Pixel (600 dpi) 3600 x 2400 px
#
# Resultierende Abstaende:
# Gap in Pixel 36,5 + 68,5 px
#
# Ideales Fototerminal
#
# echo $MONTAGE
#
if [ "$MONTAGE" = "8X" ]
then
GEOMETRY="-geometry 827x1063+36+68"
INFILES="$1 $1 $1 $1 $1 $1 $1 $1"
OPTIONS="$OPTIONS -tile 4x2"
elif [ "$MONTAGE" = "6X" ]
then
GEOMETRY="-geometry 827x1063+185+68"
INFILES="$1 $1 $1 $1 $1 $1"
OPTIONS="$OPTIONS -tile 3x2"
fi
#
# ---------------------------------------
# Das Foto wird jeweils 2 px kleiner!
# ---------------------------------------
#
# Kodak_Fototerminal:............................
# Darstellung 2,5% zu gross, Bild 10,2 x 15,2 cm
#................................................
# Alle Angaben in Pixel (600 dpi)
# Passbild 807 x 1037
# Fotopapier 3591 x 2409
# Gap 91 x 168
# Rand (2mm) 47
# ---------------------------------------
#
# GEOMETRY="-geometry 807x1037+45+84"
OPTIONS="$OPTIONS -profile /usr/local/share/color/icc/eciRGB_v2.icc"
#
#
#
echo "GEOMETRY : $GEOMETRY"
echo "OPTIONS : $OPTIONS"
#
# ImageMagick montage:.
#
montage \
$GEOMETRY $OPTIONS $INFILES \
$outfile
echo "Fertig! Ergebnis wurde in $outfile geschrieben."
echo
echo "*******************************************"
echo "* Passbild ist für Foto-Kiosk vorbereitet *"
echo "*******************************************"
echo
...[Radiergummi, Ende Bleistift]...
MfG
Uwe Borchert