Springe zum Hauptinhalt

Bourne
next up previous contents
Next: for-Kommando Up: Ablaufsteuerung Previous: if-Kommando

test-Kommando

Mit dem Kommando test kann der Exit-Status in Abhängigkeit vom Wahrheitswert eines Ausdruckes gezielt gesetzt werden.


Beispiel:

$ test -f sort.c      # Exit-Status gleich 0, falls File sort.c existiert
Alternative Syntax:
$ [ -f sort.c ]       # Exit-Status gleich 0, falls File sort.c existiert
Das Kommando test erlaubt neben der Untersuchung von Files und Filetypen außerdem numerische Tests und Zeichenkettenvergleiche:
  • numerische Vergleiche
    • allgemeine Form:


      [ 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


    • Beispiele:

      #!/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.

  • Zeichenkettenvergleiche
    • allgemeine Formen


      [ zk1 = zk2 ] $\char93 $ Test auf Gleichheit


      [ zk1 != zk2 ] $\char93 $ 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
      
  • Existenz einer Zeichenkette


    • allgemeine Formen:


      [ -z zeichenkette ] $\char93 $ Test auf Länge 0 (leere Zeichenkette)


      [ -n zeichenkette ] $\char93 $ Test auf Länge ungleich 0, d.h. Existenz


    • Beispiel:
      #!/bin/sh
      #
      # Aufruf: $0 <filename}>
      #
      if [ -z "$1" ]
      then echo "Aufruf: $0 filename"
      else
          ...
      fi
      
    • Bemerkung:
      if [ -z $1 ]
      
      führt bei fehlendem Argument zu Fehlernachricht:

      cmd_name: argument expected


  • Untersuchung von Files


    • allgemeine Form:


      [ 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


    • Beispiel:
      #!/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
      
      
    • Bemerkung:

      Die erläuterten Ausdrücke können darüber hinaus folgendermaßen zu komplexen Ausdrücken kombiniert werden:


      [ !ausdruck ] $\char93 $ Negation von ausdruck


      [ ausdruck1 -a ausdruck2 ] $\char93 $ logisches ,,UND``


      [ ausdruck1 -o ausdruck2 ] $\char93 $ logisches ,,ODER``


next up previous contents
Next: for-Kommando Up: Ablaufsteuerung Previous: if-Kommando
  • Porträt eines Mannes

    Studieren trotz Vollzeitjob

    Max Chris Schreiber hat nach seinem VWA-Abschluss erfolgreich ein berufsbegleitendes Bachelorstudium „Public Sector Management“ an der TU Chemnitz gemeistert und damit seinen Blick auf den öffentlichen Sektor erweitert …

  • Eine blonde Frau hält zwei beschriftete Aufkleber hoch.

    TU Chemnitz feiert erneut Vielfalt beim Christopher Street Day

    Let’s celebrate #TUCgether: TU Chemnitz nimmt am 4. Juli 2026 mit einem Wagen am Christopher Street Day in Chemnitz teil und zeigt die Vielfalt der TUC-Familie – Alle sind herzlich eingeladen, sich zu beteiligen …

  • Eine Schülerin im weißen Kittel experimentiert mit einem Reagenzglas im Labor.

    Junge Chemietalente auf der Suche nach der Substanz X

    55. Ausgabe des Chemie-Wettbewerbs „Julius Adolph Stöckhardt“ fand an der TU Chemnitz statt – Toni Radecker vom Clemens-Winkler-Gymnasium Aue belegte Platz 1 und verteidigte damit seinen Titel aus dem Vorjahr …

  • Ein Mann steht vor einem Gebäude.

    „Die Sprachbarriere verschwindet schneller, als man denkt“

    Piotr Marsza?ek aus Katowice hat über die „Betreuungsinitiative Deutsche Auslands- und Partnerschulen“ des Deutschen Akademischen Austauschdienstes den Weg an die TU Chemnitz gefunden …