Parametersubstitution Der Kommandozeileninterpreter Bash Werte einlesen mit read Inhalt Index


Testen von Bedingungen

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


Parametersubstitution Der Kommandozeileninterpreter Bash Werte einlesen mit read Inhalt Index