3.6 Argumente jenseits von $9
Bisher wurde nur die Möglichkeit behandelt, wie neun Argumente in der Kommandozeile ausgewertet werden können. Eine simple Technik, die Ihnen in allen Shells zur Verfügung steht, ist der Befehl shift, welchen Sie ja bereits kennen gelernt haben (siehe auch das Script-Beispiel »ashifter2« aus Abschnitt 3.4).
Neben shift gibt es noch zwei weitere gängige Methoden, mit den Variablen $* oder $@ zu arbeiten. Auch hierbei können Sie in einer for-Schleife sämtliche Argumente abgrasen, egal, wie viele Argumente vorhanden sind. Wenn Sie sich fragen, wozu das gut sein soll, so viele Argumente zu behandeln, kann ich Ihnen als Stichwort »Metazeichen« oder »Datei-Expansion« nennen. Als Beispiel folgendes Script:
# Beliebig viele Argumente in der Kommandozeile auswerten
# Name: aunlimited
i=1
for argument in $*
do
echo "$i. Argument : $argument"
i=`expr $i + 1`
done
Das Script bei der Ausführung:
you@host > ./aunlimited A B C D E F G H I J K
1. Argument : A
2. Argument : B
3. Argument : C
4. Argument : D
5. Argument : E
6. Argument : F
7. Argument : G
8. Argument : H
9. Argument : I
10. Argument : J
11. Argument : K
Das Script arbeitet zwar jetzt beliebig viele Argumente ab, aber es wurde immer noch nicht demonstriert, wofür so etwas gut sein soll. Rufen Sie doch das Script nochmals folgendermaßen auf:
you@host > ./aunlimited /usr/include/*.h
1. Argument : /usr/include/af_vfs.h
2. Argument : /usr/include/aio.h
3. Argument : /usr/include/aliases.h
4. Argument : /usr/include/alloca.h
5. Argument : /usr/include/ansidecl.h
...
...
235. Argument : /usr/include/xlocale.h
236. Argument : /usr/include/xmi.h
237. Argument : /usr/include/zconf.h
238. Argument : /usr/include/zlib.h
239. Argument : /usr/include/zutil.h
Das dürfte Ihre Fragen nach dem Sinn beantworten. Durch die Datei-Expansion wurden aus einem Argument auf einmal 239 Argumente.
3.6.1 Beliebig viele Argumente (Bash und Korn-Shell only)
In der Bash und der Korn-Shell steht Ihnen noch eine weitere Alternative zur Verfügung, um auf ein Element jenseits von neun zurückzugreifen. Hierbei können Sie alles wie gehabt nutzen (also $1, $2 ... $9), nur dass Sie nach der neunten Position den Wert in geschweifte Klammern (${n}) setzen müssen. Wollen Sie bspw. auf das 20. Argument zurückgreifen, gehen Sie folgendermaßen vor:
# Argument 20
echo "Das 20. Argument: ${20}"
# Argument 99
echo ${99}
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.
|