Poor mans getopt_long für die Bash

Die Bash unterstützt denn Skriptschreiber leider nicht mit Optionen der Art --lang-option. Hier ein ganz simpler Weg, wie man dieses Verhalten rudimentär emulieren kann.

## Bash hat kein getopt_long, wir wollen aber trotzdem sowas wie --scripts haben.
## Deswegen nehmen wir die Parameter manuell auseinander und sortieren alle --*
## Parameter erstmal aus
 
for opt in $@; do
    case $opt in
	--*)
	    LONG_OPTS="$LONG_OPTS $opt"
	    ;;
	*)
	    OPTS="$OPTS $opt"
	    ;;
    esac
 
done
 
 
## Alle "kurzen" Optionen wieder zu positional params machen
set -- $OPTS
######################################################################

Danach ist die Variable $LONG_OPTS ein String, in dem durch Leerzeichen getrennt die einzelnen langen Optionen drin stehen. Diese kann man z.B. wie folgt auswerten:

for lo in $LONG_OPTS; do
    case $lo in
	--lange-option-1)
	    var_1="Wert 1"
	    ;;
	--lange-option-2)
	    echo "Hurra,. --lange-option-2 war gesetzt"
 
	    ;;
	*)
	    echo "Unbekannte Option: $lo"
    esac
done

Trackback URL for this post:

http://www.rdoering.net/trackback/8