|
|
Die Formulierung von Bedingungen ist in der Bash nicht durch
einfache Ausdrücke zu realisieren, da zum einen viele Sonderzeichen
(<,>) bereits reserviert sind und zum anderen alle Aktionen über ein
einheitliches Kommandokonzept durchgeführt werden sollen. Deswegen
exisitiert für solche Zwecke das build-in Kommando
test.
test liefert 0,
falls die Bedingung erfüllt ist, und eine 1 sonst.
Die Schreibweise in eckigen Klammern ist eine Ersatzdarstellung.
user@sonne> test "$i" user@sonne> [ "$i" ]
gibt 0 zurück, wenn die Variable i belegt ist, andernfalls eine
1.
user@sonne> test -e $i
testet, ob eine Datei mit dem Namen in i existiert.
Für Dateien existieren folgende Tests:
| Option | Bedeutung |
| -b/-c | Test auf Gerätedatei (Block/Character) |
| -d | Test auf Verzeichnis |
| -e | Existenz der Datei |
| -f | Test auf normale Datei |
| -p | Test auf Pipe |
| -r/-w/-x | Test auf Lese-/Schreib-/Ausführungsrecht |
| -s | Test, ob Datei nicht leer ist |
Mehrere Tests können kombiniert werden:
| Option | Bedeutung |
| ! | Negation. |
| -a | Logisches UND zweier Tests |
| -o | Logisches ODER zweier Tests |
Um sich mit dem Kommando vertraut zu machen, kann man dieses gleich auf der Shell ausprobieren:
user@sonne> var=5 user@sonne> test $var -gt 5; echo $? 1 user@sonne> test -f /dev/console; echo $? 1 user@sonne> test -c /dev/console; echo $? 0 user@sonne> test -e /bin/passwd -a -x /bin/passwd; echo $? 0 user@sonne> test -b /dev/null -o -c /dev/null user@sonne> test $? -eq 0 && echo "Geraetedatei" Geraetedatei
|
|