Conditional Expression

Ein Conditional Expression ist ein unary expression oder binary expression.
Er formuliert eine Bedindung diese evaluiert zu TRUE  oder FALSE.
Ein derartiger Expression   wird  i.d.R. eingesetzt in
       test     if     while     until
Die folgenden Kombinationen können  verwendet werden, um den Ausdruck zu bilden.

Dateioptionen      	Prüfung
  -r   file        	Datei vorhanden und Leserechte gegeben
  -w file         	Datei vorhanden und Schreibrechte gegeben
  -x  file		Datei vorhanden und execute Bit gesetzt.  Wenn File ein Directory
 			ist, dann kann ein search  durchgeführt werden.
  -f file         	Datei vorhanden und regular file
  -d file         	Datei vorhanden und directory
  -c file         	Datei vorhanden und character special file
  -b file         	Datei vorhanden und block special file
  -p file         	Datei vorhanden und named pipe (fifo)
  -u file         	Datei vorhanden und set-user-id Bit gesetzt
  -g file         	Datei vorhanden und set-group-id Bit gesetzt
  -k file         	Datei vorhanden und sticky Bit gesetzt
  -s file         	Datei vorhanden und Länge grösser als 0
  -L file         	Datei vorhanden und ist ein symbolic-link
  -O file         	Datei vorhanden und Eigentümer ist die effective user id
  -G file         	Datei vorhanden und  Eigentümer ist die effective group  id
  -S file         	Datei vorhanden und ist ein special file vom Type socket
   -t [filedes] 		Datei offen und beschreibt der File-Descriptor ein Terminal
			(Default ist Descriptor 1 ).  filedes darf nicht weggelassen
			werden, wenn [[  ... ]]   verwendet wird

binary File Operatoren
   file1 -nt file2	file ist neuer als file2
   file1 -ot file2	file1 ist älter als file2
   file1 -ef file2 	file1 ist ein anderer Name für file2   (link)
                          [[ quota -ef /tmp/try ]] &&  ( print link ; ls -li quota /tmp/try )

unary Operatoren
  -z s1            	hat der String s1 die Länge 0 hat (Leerstring)
  -n s1           	ist die Länge des Strings grösser 0 .
  -o option      	ist option gesetzt

Stringoperatoren    (Verwendung in test [ .. ]  und [[ ... ]]
  s1 = s2         	String s1 gleich String s2 ist
  s1 != s2        	String s1 ungleich String s2 ist

Stringoperatoren      (Verwendung nur in  [[ ... ]]   möglich  )
  s1 =   pattern      	String s1 gleich pattern
  s1 !=  pattern	String s1 ungleich pattern
  s1 <   s2		String s1 kleiner als s2 (in ASCII -Sequenz)
  s1 >   s2		String s1 größer als s2 (in ASCII -Sequenz)

Numerische Operatoren
  n1 -eq n2   		Für den Vergleich von numerischen Werten sollten immer die
  n1 -ge n2		entsprechenden Options verwendet werden und nicht
  n1 -gt  n2		<  <=  =  !=  >=  >
  n1 -le   n2		da führende Nullen das Ergebnis verfälschen könnten.
  n1 -lt    n2
  n1 -ne n2