![]() ![]() ![]() |
![]() ![]() |
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
![]() ![]() ![]() |
![]() ![]() |