Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
Shell-Programmierung von Jürgen Wolf
Einführung, Praxis, Referenz
Buch: Shell-Programmierung

Shell-Programmierung
782 S., mit CD, 44,90 Euro
Rheinwerk Computing
ISBN 3-89842-683-1
gp Kapitel 3 Parameter und Argumente
  gp 3.1 Einführung
  gp 3.2 Kommandozeilenparameter $1 bis $9
  gp 3.3 Besondere Parameter
    gp 3.3.1 Die Variable $*
    gp 3.3.2 Die Variable $@
    gp 3.3.3 Die Variable $#
  gp 3.4 Der Befehl shift
  gp 3.5 Argumente und Leerzeichen
  gp 3.6 Argumente jenseits von $9
    gp 3.6.1 Beliebig viele Argumente (Bash und Korn-Shell only)
  gp 3.7 Argumente setzen mit set und Kommando-Substitution
  gp 3.8 getopts – Kommandozeilenoptionen auswerten
  gp 3.9 Vorgabewerte für Variablen


Rheinwerk Computing

3.3 Besondere Parametedowntop


Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 3.2   Weitere Kommandozeilenparameter


Die hier beschriebenen Variablen wurden zwar bereits kurz in Kapitel 2, Variablen, angesprochen, aber sie passen doch eher in dieses Kapitel. Daher werden diese Variablen jetzt genau erläutert.


Rheinwerk Computing

3.3.1 Die Variable $*  downtop

In der Variablen $* werden alle Argumente in der Kommandozeile (ausgenommen der Scriptname = $0) als eine einzige Zeichenkette gespeichert.

# Beachtet alle Argumente der Kommandozeile
# Name: aargumstr
echo "Scriptname               : $0"
echo "Die restlichen Argumente : $*"

Das Script bei der Ausführung:

you@host > ./aargumstr test1 test2 test3
Scriptname               : ./aargumstr
Die restlichen Argumente : test1 test2 test3
you@host > ./aargumstr Viel mehr Argumente aber ein String
Scriptname               : ./aargumstr
Die restlichen Argumente : Viel mehr Argumente aber ein String

Die Variable $* wird gern bei Shellscripts verwendet, die eine variable Anzahl von Argumenten erwarten. Wenn Sie nicht genau wissen, wie viel Argumente in der Kommandozeile eingegeben werden, müssten Sie Ihr Script immer um die Anzahl der Positionsparameter ($1 bis $n) erweitern. Verwenden Sie hingegen $*, ist die Anzahl der Argumente unwichtig, weil hierbei alle in $* zusammengefasst werden. Dies lässt sich z. B. hervorragend in einer for-Schleife verwenden.

# Eine variable Anzahl von Argumenten
# Name: avararg
for i in $*
   do
      echo '$*:' $i
   done

Das Script bei der Ausführung:

you@host > ./avararg eine variable Anzahl von Argumenten
$*: eine
$*: variable
$*: Anzahl
$*: von
$*: Argumenten
you@host > ./avararg egal wie viele oder wenig
$*: egal
$*: wie
$*: viele
$*: oder
$*: wenig

Die for-Schleife wird in Abschnitt 4.10 ausführlich behandelt. Beachten Sie aber bei dem Beispiel »avararg«: Wenn Sie dem Script ein Argument wie folgt übergeben

you@host > ./avararg "eine variable Anzahl von Argumenten"

sieht die Ausgabe genauso aus wie ohne die doppelten Anführungszeichen, obwohl ja eigentlich nur ein Argument ($1) übergeben wurde. Die Ursache ist hierbei die for-Schleife, welche das Argument anhand der Variablen IFS (hier anhand der Leerzeichen) auftrennt.

Würden Sie in der for-Schleife die Variable $* in doppelte Anführungszeichen setzen, so würde die anschließende Ausgabe wieder zu einer Zeichenkette zusammengefasst:

# Eine variable Anzahl von Argumenten
# Name: avararg2
for i in "$*"
   do
      echo '$*:' $i
   done

Wenn Sie dies nun mit "$*" anstatt $* ausführen, sieht die Ausgabe wie folgt aus:

you@host > ./avararg2 eine variable Anzahl von Argumenten
$*: eine variable Anzahl von Argumenten

Rheinwerk Computing

3.3.2 Die Variable $@  downtop

Im Gegensatz zur Variablen $* fasst die Variable $@ die Argumente in einzelne Zeichenketten zusammen. Die Funktion wird ähnlich verwendet wie $*, nur mit dem eben erwähnten Unterschied. Das Anwendungsgebiet dieser Variablen liegt ebenfalls vorwiegend in einer Schleife, weshalb hierauf im gegebenen Kapitel (siehe Kapitel 4, Kontrollstrukturen, nochmals darauf eingegangen wird.


Merke   Alle Argumente (auch mehr als 9) sind durch $* oder $@ erreichbar. $* liefert sie als ein Wort, verkettet mit Leerzeichen, und $@ liefert sie als ein Argument pro Wort.



Rheinwerk Computing

3.3.3 Die Variable $#  toptop

Die Variable $# enthält die Anzahl der Argumente, die beim Aufruf des Shellscripts mit angegeben wurden. Als Beispiel dient folgendes Shellscript:

# Anzahl von Argumenten
# Name: acountarg
echo $*
echo "Das sind $# Argumente"

Das Beispiel bei der Ausführung:

you@host > ./acountarg
Das sind 0 Argumente
you@host > ./acountarg test1 test2 test3
test1 test2 test3
Das sind 3 Argumente

Der häufigste Einsatz von $# erfolgt bei einer if-Entscheidungsanweisung, ob die vorgegebene Anzahl von Argumenten übergeben wurde oder nicht. Wenn nicht, können Sie mit einer Fehlermeldung antworten. Vorweggenommen, ohne genauer darauf einzugehen, finden Sie hier einen solch typischen Fall:

# Überprüft die Anzahl von Argumenten
# Name: achkarg
# Wurden weniger als zwei Argumente eingegeben?
if [ $# -lt 2 ]    # lt = lower then
   then
   echo "Mindestens zwei Argumente erforderlich ..."
   echo "$0 arg1 arg2 ... arg_n"
   exit 1
fi
echo "Anzahl erforderlicher Argumente erhalten"

Das Shellscript bei der Ausführung:

you@host > ./achckarg
Mindestens zwei Argumente erforderlich ...
./acheckarg arg1 arg2 ... arg_n
you@host > ./achckarg test1 test2
Anzahl erforderlicher Argumente erhalten

Mehr zu den Entscheidungsanweisungen mit if erfahren Sie im nächsten Kapitel 4, Kontrollstrukturen.



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

 << zurück
  
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Shell-Programmierung
Shell-Programmierung
bestellen
 Buchtipps
Zum Rheinwerk-Shop: Shell-Programmierung






 Shell-Programmierung


Zum Rheinwerk-Shop: Linux-Server






 Linux-Server


Zum Rheinwerk-Shop: Das Komplettpaket LPIC-1 & LPIC-2






 Das Komplettpaket
 LPIC-1 & LPIC-2


Zum Rheinwerk-Shop: Linux-Hochverfügbarkeit






 Linux-
 Hochverfügbarkeit


Zum Rheinwerk-Shop: Linux Handbuch






 Linux Handbuch


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern