Parameter des Scriptes

27/04/2012 - 11:41 von Philipp Kraus | Report spam
Hallo,

ich benutze zurzeit bei einem Script die getopts Funktion, um die
Parameter zu setzen:

while getopts "k:s:f" opt; do
case $opt in

Da aber nun doch recht viele weitere Parameter hinzu kommen würde ich
gerne z.B.
das ganze einmal als
myscript -k schlüssel
oder
myscript --key schlüssel

als Eingabe ermöglichen. Bei getopts kann man ja nur einzelne
Buchstaben verwenden.
Mein Script hat nur einen festen Parameter, d.h. der letzte Parameter
hat keinen Schlüssel, d.h.
der Aufruf sieht so aus myscript <key, value>* filename
ich kann also beliebig viele Schlüssel-Value-Paare vor dem filename
haben, wobei für den Schüssel
entweder eine Kurzform - <alpha>* möglich sein soll oder eben eine
Langform -- <Wort>

Wie verarbeitet man eine solche Parameterliste am besten in einem Bashscript?

Danke

Phil
 

Lesen sie die antworten

#1 Paul Hink
27/04/2012 - 14:33 | Warnen spam
Philipp Kraus wrote:

Mein Script hat nur einen festen Parameter, d.h. der letzte Parameter
hat keinen Schlüssel, d.h.
der Aufruf sieht so aus myscript <key, value>* filename
ich kann also beliebig viele Schlüssel-Value-Paare vor dem filename
haben, wobei für den Schüssel
entweder eine Kurzform - <alpha>* möglich sein soll oder eben eine
Langform -- <Wort>

Wie verarbeitet man eine solche Parameterliste am besten in einem Bashscript?



Ein möglicher Ansatz (Skizze, ungetestet):

while [ "$#" -ge 3 ]; do
case "$1" in
-k|--key) echo "key = $2";;
-f|--foo) echo "foo = $2";;
...
*) echo "Invalid argument '$1'."; break;;
esac
shift 2
done

if [ "$#" -ne 1 ]; then
echo "Usage error."
exit
fi

filename="$1"

Ähnliche fragen