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
  • Ki generiertes Bild

    Offen für Argumente geht in die zweite Runde

    Online-Debattenformat der Juniorprofessur Soziologie der TU Chemnitz thematisiert am 10. September 2025 die Rolle der Solarenergie im Zuge der Energiewende …

  • Gruppe vieler Menschen

    Let's run #TUCgether!

    Zum Jubiläum des Chemnitzer Firmenlaufs gingen 266 Laufbegeisterte für die TU Chemnitz an den Start …

  • Menschen stehen vor einer Leinwand

    Erfolgreiche Summer School an der TU Chemnitz

    Professur Medienpsychologie und die Hochschulallianz Across begrüßten zur Summer School „How much science is in science fiction?“ medienbegeisterte Nachwuchswissenschaftlerinnen und -wissenschaftler aus neun verschiedenen Ländern …

  • Menschen stehen vor einem Haus

    Als Azubi an die Uni? Ja, klar!

    Kanzler der TU Chemnitz begrüßte neue Auszubildende und gratulierte Absolventinnen und Absolventen zum erfolgreichen Berufsabschluss – TU Chemnitz bildet aktuell in zehn Berufen aus …