Problem mit if-Schleife

Diskutiere Problem mit if-Schleife im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; Hi! Ich bin zu dumm, eine if-Schleife zu bauen, hier ein exemplarischer Auszug. Es soll die Programmversion ermittelt werden und entsprechend...

  1. logout

    logout Grünschnabel

    Dabei seit:
    22.10.2004
    Beiträge:
    7
    Zustimmungen:
    0
    Hi!

    Ich bin zu dumm, eine if-Schleife zu bauen, hier ein exemplarischer Auszug. Es soll die Programmversion ermittelt werden und entsprechend soll eine Variable gesetzt werde:


    #!/bin/bash
    shellvers=$(/bin/bash --version|head -1|cut -c 19-23)

    echo "testweise Ausgabe der ermittelten Version:"
    echo $shellvers

    if [ $shellvers="4.0" ]; then
    echo okay
    fi

    Das mit der Bash-Version ist ein Bsp, ich weiß, dass das auch anders geht, mir geht es nur um die Schleife.

    Also, auf den meisten Systemen wird $shellvers 2.0b oder 3.0 ergeben, die if-Bedingung wird trotzdem postiv erfüllt, obwohl $shellvers niemals "4.0" sein kann... warum?

    Warum wird diese if-Bedingung positiv erfüllt, obwohl $shellvers niemals den Wert 4.0 hat. wo is das der Fehler?
     
  2. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    = != ==

    Gruss, Phorus
     
  3. Phate

    Phate Frickler/Kellerkommunist

    Dabei seit:
    08.02.2004
    Beiträge:
    261
    Zustimmungen:
    0
    Ort:
    Rheinland

    :finger:
     
  4. fossy

    fossy - dead -

    Dabei seit:
    26.03.2004
    Beiträge:
    274
    Zustimmungen:
    0
    btw: set| grep -i bash_v

    gruss, fossy.
     
  5. sowatt

    sowatt Foren As

    Dabei seit:
    19.03.2003
    Beiträge:
    94
    Zustimmungen:
    0
    Ort:
    Hamburg
    Nun macht's ihm doch nicht so schwer... ;)

    Wenn Du if benutzt(was definitiv keine Schleife ist) dan fragst Du
    z.B. ob eine Variable einen Wert hat der gleich was auch immer ist.
    Das machst Du mit dem Vergleichsoperator ==

    Du hast deiner Variablen einen Wert zugewiesen, das machst Du mit =

    Wenn Du auf ungleichheit prüfen willst nimmst Du den Negationsoperator
    und den Zuweisungsoperator, also !=

    MfG
    sowatt
     
  6. rup

    rup Haudegen

    Dabei seit:
    10.04.2002
    Beiträge:
    627
    Zustimmungen:
    0
    Code:
    if [ "$shellvers" == "4.0" ]
    then
         echo ok
    fi
    
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Nochmal zur Richtigstellung: a="wert" übergibt a den Wert "wert". Der Grund, warum if [ a="wert" ] immer true ist, liegt daran, dass bei fehlerfreier Übergabe der Fehlercode 0 an if zurückgegeben wird, was als true interpretiert wird.

    Ist übrigens 'ne gern genommene Prüfungsfrage in UNIX/C: in C ist !0 true, in UNIX 0.

    Gruss, Phorus
     
Thema:

Problem mit if-Schleife

Die Seite wird geladen...

Problem mit if-Schleife - Ähnliche Themen

  1. Probleme mit WinSCP und Rechten

    Probleme mit WinSCP und Rechten: Hallo. Ich habe vor ein paar Tgen meinen ersten Ubuntu 16.04 vServer bei 1&1 bestellt, gemäß dem sicheren Umgang damit, habe ich erstmal den SSH...
  2. Bootproblem

    Bootproblem: Hallo Ein PC (i686 mit Debian unstable, nox) hat Bootprobleme (will heißen ist erfolgt keine Grafikausgabe. was ich bisher gemacht habe: HDD an...
  3. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  4. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  5. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...