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) |