![]() |
Universitätsrechenzentrum |
![]() |
|
Beispiel:
$ test -f sort.c # Exit-Status gleich 0, falls File sort.c existiertAlternative Syntax:
$ [ -f sort.c ] # Exit-Status gleich 0, falls File sort.c existiertDas Kommando test erlaubt neben der Untersuchung von Files und Filetypen außerdem numerische Tests und Zeichenkettenvergleiche:
[ N operator M ]
Wobei N und M für numerische Werte stehen, möglicherweise durch
Shell-Variablen repräsentiert und operator für eine der folgenden
Möglichkeiten steht:
| -eq | Gleichheit von N und M |
|---|---|
| -ne | Ungleichheit von N und M |
| -gt | N ist größer als M |
| -lt | N ist kleiner als M |
| -ge | N ist größer oder gleich M |
| -le | N ist kleiner oder gleich M |
#!/bin/sh # # Pruefen, ob mehr als <anzahl> Nutzer zum # Zeitpunkt des Aufrufs angemeldet sind # # Aufruf: $0 <anzahl> # nutzer=`who | wc -l` if [ $# -eq 0 ] then echo "Aufruf: $0 anzahl" elif [ $nutzer -gt $1 ] then echo "Mehr als $1 Nutzer angemeldet" fi
# # Varianten der Wertezuweisung an Variable # nummer=1 number=0001 numero=' 1'
Bei einem numerischen Test auf Gleichheit zwischen diesen Variablenwerten wird immer der
Exit-Status 0 (d.h. Gleichheit) geliefert.
[ zk1 = zk2 ]
Test auf Gleichheit
[ zk1 != zk2 ]
Test auf Ungleichheit
Beispiele:
[ $nummer = $number ] # Exit-Status ungleich 0!
[ $nummer = $numero ] # Exit-Status gleich 0 (!!) da durch
# test fuehrende Leerzeichen verloren gehen
aber:
[ "$nummer" = "$numero" ] # Exit-Status ungleich 0
[ -z zeichenkette ]
Test auf Länge 0 (leere Zeichenkette)
[ -n zeichenkette ]
Test auf Länge ungleich 0,
d.h. Existenz
#!/bin/sh
#
# Aufruf: $0 <filename}>
#
if [ -z "$1" ]
then echo "Aufruf: $0 filename"
else
...
fi
if [ -z $1 ]führt bei fehlendem Argument zu Fehlernachricht:
cmd_name: argument expected
[ operator filename ]
wobei operator steht für:
| -s | File existiert und ist nicht leer |
|---|---|
| -f | File ist normales File, kein Verzeichnis |
| -d | File ist ein Verzeichnis |
| -w | für das File besteht Schreiberlaubnis |
| -r | für das File besteht Leseerlaubnis |
| -x | File ist ausführbar |
#!/bin/sh # # Loeschen eines Files bzw. # eines leeren Verzeichnisses # # Aufruf remove <filename> # if [ -d $1 ] then rmdir $1 elif [ -f $1 ] then rm $1 fi
Die erläuterten Ausdrücke können darüber hinaus folgendermaßen zu komplexen Ausdrücken kombiniert werden:
[ !ausdruck ]
Negation von ausdruck
[ ausdruck1 -a ausdruck2 ]
logisches
,,UND``
[ ausdruck1 -o ausdruck2 ]
logisches
,,ODER``
| Ursula Riedel 05. April 2003 |
Technische Universität Chemnitz, Straße der Nationen 62, 09107 Chemnitz Impressum - Copyright © 2005 by TU Chemnitz, URZ, alle Rechte vorbehalten. |
Druckansicht |