Montag, 29. Juni 2009

Bashhackers next part ;)

Dummerweise nimmt die Umgebungsvariable $OPTARG keine Arraydeklartation an. Will man beispielsweise eine Option implementieren, die mehrere Argumente haben soll steht man ziemlich blöde da.

Die Lösung:
Die Argumente als Buchstabenkürzel übergeben und dann den Sting in ein Array umwandeln, wobei jeder Buchstabe als Elemente des Arrays behandelt wird:

Beispielcode:
#!/bin/bash

#script example

#first init of variables
WITH_FEATURE=


option_w()
{
W_F=$OPTARG
#3 possible arguments ASC
WITH_FEATURE[0]=${W_F:0:1}
WITH_FEATURE[1]=${W_F:1:1}
WITH_FEATURE[2]=${W_F:2:1}
}


while getopts w: flags
do
case $flags in
w) option_w
;;
\?) # a help option is here
esac
done
shift `expr $OPTIND - 1`

for i in ${WITH_FEATURE[@]}
do
case $i in
A) #do action a
C) # do action b
S) #do action c
esac
done

exit 0

Nachteil: Funktioniert nur wenn die möglichen Optionen vorher bekannt und überschaubar sind. für den Fall das zum Beispiel beliebige Verzeichnisse als Argument übergeben werden, muss man sich was anderes einfallen lassen.

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.