ubuntuusers.de

Wie wertet man in einem Shellscript Parameter aus (Komandozeilenparameter)

Status: Gelöst | Ubuntu-Version: Xubuntu 14.04 (Trusty Tahr)
Antworten |

technohead

Avatar von technohead

Anmeldungsdatum:
1. April 2007

Beiträge: 869

Hallo,

wie die Parameter übertragen und ausgelesen werden weiß ich bereits - was mir gerade Kopfzerbrechen bereitet ist folgendes:

Manchmal benötigt man Parameter, welche einen Wert enthalten und Aufrufen würde man das Script z.B. wie folgt:

bash scriptname.sh -i /Pfad/Dateiname.txt -o /Pfad/Dateiname.txt

Wenn sich die Reihenfolge der Parameter ändert, dann müsste ich irgendwie in der Lage sein, die Parameter zu identifizieren um sie in entsprechende Variablen schreiben zu können. Hinzukommt, dass eventuell Parameter übertragen werden, welche ohne einen Wert übertragen werden - also für sich alleine stehen und ich nur wissen muss ob der Parameter angegeben wurde oder nicht.

Gibt es irgend ein Konstrukt mit welchem man diese Aufgabe lösen kann?

Vielen Dank schon mal.

xubuntufriese

Avatar von xubuntufriese

Anmeldungsdatum:
3. Mai 2014

Beiträge: 340

Du suchst wahrscheinlich getopts.

technohead

(Themenstarter)
Avatar von technohead

Anmeldungsdatum:
1. April 2007

Beiträge: 869

Ja genau das war die Lösung - ich hatte den Artikel zwar schon mal gelesen aber nicht richtig verstanden - es kommt anscheinend nur darauf an "shift" richtig einzusetzen.

1
2
3
4
5
6
7
8
9
while [ $# -gt 0 ]       #Solange die Anzahl der Parameter ($#) größer 0
do                   
    [ $1 == "-b" ] && var_b=true;
    [ $1 == "-r" ] && var_r=true;
    [ $1 == "-c" ] && var_c=true;
    [ $1 == "-i" ] && shift && inputfile=$1
    [ $1 == "-o" ] && shift && outputfile=$1
  shift                  #Parameter verschieben $2->$1, $3->$2, $4->$3,...
done

Damit ist mein Problem gelöst - Vielen Dank!

xubuntufriese

Avatar von xubuntufriese

Anmeldungsdatum:
3. Mai 2014

Beiträge: 340

Ich meinte eigentlich die Stelle im Artikel, die mit "Einfacher, schneller und komfortabler können Parameter mit dem Befehl getopts ausgewertet werden." beginnt. Aber wenn schon alles in Butter ist... 😉

Antworten |