Es ist zwar durchaus möglich mit der "alt bewährten Methode" $1-$9 in shell scripts Kommandozeilen zu machen, allerdings ist das eher umständlich.
Mit der Funktion "getopts" hat jedoch zumindest die bash-shell ein sehr handliches Werzeug dafür eingebaut!
Dabei sieht die synatx so aus:
getopts Optionen Variable [Argumente] |
getopts Optionen Variable [Argumente]
Dabei werden alle Optionen die man Abfragen will mit einem ":" davor und dahinter hingeschrieben, z.B.:
Möchte man schalter/flags verwenden, die keinen Wert haben, lässt man eingach den ":" hinter der Option weg:
Und ein praktisches Beispiel:
#!/bin/bash
# Demonstriert getopt
while getopts abc:D: opt
do
case $opt in
a) echo "Option a";;
b) echo "Option b";;
c) echo "Option c : ($OPTARG)";;
D) echo "Option D : ($OPTARG)";;
esac
done |
#!/bin/bash
# Demonstriert getopt
while getopts abc:D: opt
do
case $opt in
a) echo "Option a";;
b) echo "Option b";;
c) echo "Option c : ($OPTARG)";;
D) echo "Option D : ($OPTARG)";;
esac
done
Und so wird das dann aufgerufen:
user@host > ./test.sh -a
Option a
user@host > ./test.sh -b
Option b
user@host > ./test.sh -c
./agetopter: option requires an argument -- c
user@host > ./test.sh -c Hallo
Option c : (Hallo) |
user@host > ./test.sh -a
Option a
user@host > ./test.sh -b
Option b
user@host > ./test.sh -c
./agetopter: option requires an argument -- c
user@host > ./test.sh -c Hallo
Option c : (Hallo)
Quellen
getopt manpage
getopts – Kommandozeilenoptionen auswerten