if abfrage mit mehreren Bedingungen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von sst, 13.09.2005.

  1. sst

    sst Grünschnabel

    Dabei seit:
    13.09.2005
    Beiträge:
    3
    Zustimmungen:
    0
    Hallo,

    ich brauche eine If Abfrage in der ich sage z.B
    A muß 10 sein und B kann 12 15 oder 17 sein

    mit
    if [ $A -eq 10 ] -a [ $B -eq 12 -o $B -eq 15 -o $B -eq 17]
    und sämtliche varationen davon geht nicht.

    gibt es dazu eine andere Lösung?

    mfg
    Stefan
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. dramen

    dramen Routinier

    Dabei seit:
    13.01.2005
    Beiträge:
    356
    Zustimmungen:
    0
    Ort:
    Wien
    probier mal die hier:

    if [ $A -eq 10 ] && [ $B -eq 12 -o $B -eq 15 -o $B -eq 17 ]
     
  4. #3 Wolfgang, 13.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Warum machst du nicht einfach eine verschachtelte Prüfung?
    Sowas ist gerade für Anfänger viel besser lesbarer Code und
    vereinfacht die Wartung auch noch nach Monaten.
    Also ein simples :
    Code:
    [b] 
    if [ $A  -eq 10 ] ;then
            if [  $B -eq 12 -o $B -eq 15 -o $B -eq 17 ] ;then
             echo "true";
            else
             echo "No true"
             fi
    fi[/b]
    Gruß Wolfgang
     
  5. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Dein "Not true" springt aber nur an, wenn die zweite Bedingung, nicht aber die erste Bedingung falsch ist.

    Gruss, Phorus
     
  6. #5 Wolfgang, 14.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Das ist mir klar, und auch nur als Beispiel gedacht, zumal das true interessant ist.
    Gruß Wolfgang
     
  7. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    Hallo Wolfgang,

    ich wollte Dir nicht unterstellen, dass Dir das nicht klar ist :)
    Ich wollte nur drauf hinweisen, dass, falls "else" benötigt wird, Deine Methode etwas komplizierter ist.

    Gruss, Phorus
     
  8. #7 Wolfgang, 14.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ach so kompliziert ist das doch nicht.
    Code:
    if [ $A  -eq 10 ] ;then
            if [  $B -eq 12 -o $B -eq 15 -o $B -eq 17 ] ;then
             echo "A und B wahr";
            else
             echo "A wahr aber B falsch"
             fi
    else
    echo "A falsch, B wird nicht mehr getestet"
    fi
    
    ;)

    Gruß Wolfgang
     
  9. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    ...aber schlechter lesbar ;)
     
  10. sst

    sst Grünschnabel

    Dabei seit:
    13.09.2005
    Beiträge:
    3
    Zustimmungen:
    0
    also mit && dazwischen scheint das zu funktionieren, kann mir einer erklären was der unterschied zu -a ist? sollte doch beides ein "und" sein.
     
  11. Xanti

    Xanti Mouse Organist

    Dabei seit:
    05.09.2004
    Beiträge:
    1.855
    Zustimmungen:
    0
    "man test" und "man bash" sollte Dir helfen.

    -a ist eine Option des "test"-Befehls, && dagegen ist ein Kontrollparameter der bash und funktioniert folgendermassen:

    Code:
    befehl1 && befehl2
    befehl2 wird nur ausgeführt, wenn befehl1 fehlerfrei ausgeführt wurde. In Deinem Fall sind es die test-Befehle.
     
  12. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  13. sst

    sst Grünschnabel

    Dabei seit:
    13.09.2005
    Beiträge:
    3
    Zustimmungen:
    0
    Alles Klar danke erstmal.
    Nur stehe ich schon wieder bein nächsten Problem :think: :

    diesmal soll erkannt werden ob das erst zeichen eine 0 ist:

    if [ $a = ^0 ];then
    echo erste 0 erkannt

    oder
    if [ $a = 0? ];then
    echo erste 0 erkannt

    und das ganze mit ' oder " oder \ geht auch nicht.
    ? steht doch für ein belibiges zeichen und ^ für Zeilenanfang.
    Wo liegt mein fehler?
     
  14. #12 Wolfgang, 16.09.2005
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Also wenn du es als String vergleichen willst,und die bash nutzt:
    A="0123456";
    if [ ${A:0:1} ="0" ]; then "echo ${A:0:1} ist 0"; else echo "${A:0:1} nicht 0"; fi

    Bei Zahlenvergleich verwende
    if [ ${A:0:1} -eq "0" ]

    Auszug aus man bash(3)
    ...
    An additional binary operator, =~, is available, with the same precedence
    as == and !=. When it is used, the string to the right of the operator is
    considered an extended regular expression and matched accordingly (as in
    regex(3))

    also sollte das folgende auch gehen:

    if [[ $A =~ ^0.* ]]; then echo "0 am Anfang gefunden"; fi

    Es gibt noch weitere Möglichkeiten.

    man bash ;)

    Gruß Wolfgang
     
Thema: if abfrage mit mehreren Bedingungen
Besucher kamen mit folgenden Suchen
  1. bash mehrere if

    ,
  2. ubuntu if zwei bedingung

    ,
  3. python if mit mehreren bedingungen

    ,
  4. unix if mehrere bedingungen
Die Seite wird geladen...

if abfrage mit mehreren Bedingungen - Ähnliche Themen

  1. Skript mit mehreren rsync Dateien und Passwortabfrage

    Skript mit mehreren rsync Dateien und Passwortabfrage: Hallo ich will ein Mini-Skript schreiben über das ich meine Dateien von Laptop und PC synchronisieren kann! Dazu möchte ich das Programm rsync...
  2. mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

    mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern: Hallo zusammen, es geht um folgenden Teil meiner .sh-Datei: NumberCheck=`mysql $SQL_ARGS "SELECT lkw, Firma FROM adb_group WHERE...
  3. [Anfänger am Werk] if abfrage machen

    [Anfänger am Werk] if abfrage machen: Hey, Ich würde gerne eine Shell Schreiben, die wenn eine Variable höher als x ist, einen Befehl ausführt. Da ich aber totaler Anfänger bin, habe...
  4. MySQL DB im remote abfrage

    MySQL DB im remote abfrage: Moin, zur Zeit befinde ich mich in der Planungsphase für eine Smartphone Application die Anfragen an eine DB stellen soll. Allerdings ist das...
  5. WLAN-Passwort-Abfrage abschalten funktioniert nur bedingt

    WLAN-Passwort-Abfrage abschalten funktioniert nur bedingt: Hallo, immer wenn ich mich ins Uni-WLAN einwählen will, macht Ubuntu Gnome das nicht automatisch, sondern zeigt ein Fenster mit dem Login und...