Klar geht das. Beweis nachfolgend:
Code:
#!/bin/bash
while getopts x: option;do
case $option in
x) x=$OPTARG
;;
esac
done
Aufgerufen wird das Ganze mit
Code:
./skript -x Parameter
Der übergebene Parameter befindet sich nach Abarbeitung des obigen Code-Fragments in der Variable x des Skripts.
Um das ganze ein wenig verständlicher zu machen eine Erklärung zur Arbeitsweise.
Code:
while getopts x: option;do
In diesem Schleifenkonstrukt veranlasst man das Auswerten der Kommandozeilenparameter. Das Kernstück dabei ist 'getopts <liste>' variable'. In Liste gibt man die Buchstaben der Skript-Parameter an, welche zu erwarten sind. Dabei wird zwischen Optionen und Parameter-behafteten Optionen unterschieden. Für einfache Optionen (z.B. -x ohne Parameter) landet der Buchstabe der Option in der Liste, wird ein mit der Option verbundener Parameter erwartet dann muss man dem Buchstaben zustätzlich einen Doppelpunkt anfügen. getopts wertet sodann mit jedem Durchlauf der while-Schleife eine übergebene Skript-Option aus und weißt die jeweils aufgefunde Option der Variable $option zu. Sind keine weiteren Optionen mehr vorhanden, bricht die while-Schleife ab.
Code:
case $option in
x) x=$OPTARG
;;
esac
Innerhalb der while-Schleife wird der in der Variable $option enthaltene Buchstabe mit einem case-Konstrukt überprüft. Das ist das Bash-Pendant der PHP-switch-Anweisung. Wird in $option also der Buchstabe x vorgefunden, wird die Anweisung x=$OPTARG ausgeführt.
In $OPTARG befindet sich der mit einer Option verbundene Parameter, insofern in der Listen-Deklaration von getopts ein Doppelpunkt nach dem entsprechenden Options-Buchstaben steht. Somit wird ein mit der Option -x an das Skript übergebener Parameter an die Variable $x übergeben.
Alle Klarheiten beseitigt?
Schau Dir wie gesagt mal die Links von forks Signatur an, da finden sich die entsprechenden Grundlagen.
Lesezeichen