tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
574
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kalli0 kalli0 ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    3
    Hallo, eigentlich ein simples Scriptchen, macht aber nicht das, was es soll.
    Habe alles Mögliche ausprobiert, finde aber den Fehler nicht. Kann mir jemand helfen?
    $ cat compare1
    #!/bin/ksh
    clear
    z1=10 ; echo $z1
    z2=12 ; echo $z2

    if [ $z1 > $z2 ] ; echo $?
    then
    echo "$z1 is greater than $z2"
    else
    echo "$z1 is less or equal than $z2"
    fi
    ----------------------------------------------------------
    Ausgabe von echo:
    10
    12
    0
    10 is greater than 12
    -------------------------------------------------------
    Was mache ich bloß falsch?
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi kalli0 und herzlich Willkommen hier bei tutorials.de,

    Die Zeichen ">" und "<" haben in der Shell eine andere Bedeutung als du vermutest. Die Zeichen dienen nicht als mathematische Vergleichsoperatoren, sondern als Umleiter von diversen Streams (Standardausgabe, Fehlerausgabe, Standardeingabe usw.).

    Für einen Vergleich in dem if musst du dir "[" als Programmaufruf vorstellen, welchem du mit den Argumenten sagen kannst was er tun soll (Genau genommen ist "[" ein Symlink auf "test").

    In deinem Fall möchtest du einen "Größer als"-Vergleich machen, im Englischen "greater than". Folgendes sollte funktionieren:
    Code bash:
    1
    
    if [ $z1 -gt $z2 ]; then

    Weitere Operatoren findest du in der Manpage von test ("man test").

    Gruß
    BK
    kalli0 bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    kalli0 kalli0 ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    3
    Erstmal Danke für die prompte Antwort. Das war auch nicht meine Idee, sondern wird hier im Rahmen eines Lernprogrammes so publiziert. Was Du meinst kenne ich als redirection of output > oder input <.
    Ich hab's probiert und bekomme nun auch einen return code 1. Trotzdem geht es nicht in die else Schleife, sonder gibt brav aus 10 ist greater than twelve ;-(
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi,

    also folgendes funktioniert bei mir einwandfrei:
    Code bash:
    1
    2
    3
    4
    5
    
    if [ $z1 -gt $z2 ]; then
      echo "$z1 is greater than $z2"
    else
      echo "$z1 is less or equal than $z2"
    fi

    // Edit: Ich denke dass das "echo $?" zwischen dem if und dem then das Problem ist

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    kalli0 kalli0 ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    3
    Jo, danke das war's auch
     

Ähnliche Themen

  1. SQL Abfrage Funktioniert nicht.
    Von Splater im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 18.01.09, 12:57
  2. If-Abfrage funktioniert nicht
    Von Grunge im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.07.08, 00:15
  3. Sql Abfrage funktioniert nicht...
    Von flying-anzi im Forum PHP
    Antworten: 15
    Letzter Beitrag: 22.02.08, 13:32
  4. Antworten: 4
    Letzter Beitrag: 23.01.07, 16:28
  5. Abfrage funktioniert nicht
    Von corona im Forum PHP
    Antworten: 4
    Letzter Beitrag: 04.11.03, 12:12

Stichworte