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] |
Dabei werden alle Optionen die man Abfragen will mit einem ":" davor und dahinter hingeschrieben, z.B.:
getopts :a: |
Möchte man schalter/flags verwenden, die keinen Wert haben, lässt man eingach den ":" hinter der Option weg:
getopts :a |
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 |
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) |