rap: shell script if-problem

Hallo,

die else-Anweisung  funktioniert nicht. Mach ich irgendwas falsch?

  
#!/bin/ksh  
while true  
do  
 read var  
 if [ "var" != "exit" ]  
   then echo $var| tr '[A-Z]' '[a-z]'  
   else exit  
 fi  
done  

Gruß

  1. Mahlzeit,

    Mach ich irgendwas falsch?

    Ja. Deine Fehlerbeschreibung

    1. Ja. Deine Fehlerbeschreibung

      Also mit "die else-Anweisung  funktioniert nicht" habe ich gemeint, dass der Else-Zweig nicht ausgeführt wird.

      Wenn ich "exit" eingebe, dann wird nur der Befehl ausgeführt, der bei then steht. Ich will aber, dass dann das Script beendet wird...

      Wenn's jemand nicht versteht, dann kann er's ja kurz ausprobieren :-)

      Danke

      1. Mahlzeit,

        Wenn ich "exit" eingebe, dann wird nur der Befehl ausgeführt, der bei then steht. Ich will aber, dass dann das Script beendet wird...

        Und wieso vergleichst du dann den String "var" mit dem String "exit"? Die sind immer ungleich. Logisch, dass da nicht beendet wird.

        1. Hallo,

          Und wieso vergleichst du dann den String "var" mit dem String "exit"? Die sind immer ungleich. Logisch, dass da nicht beendet wird.

          Hättest du ja schon beim ersten Posting sehen können, dass da ein $ fehlt :-)

          Trotzdem Danke!

          1. Mahlzeit,

            Hättest du ja schon beim ersten Posting sehen können, dass da ein $ fehlt :-)

            Ganz ehrlich, wenn ich lese "funzt nicht", schau ich mir selten das Script an. Erfahrungsgemäss ist der Fehler nicht so einfach zu finden, wie bei dir, weil meisten Kilo(byte)weise Code gepostet wird und ich (und vermutlich auch andere) keine Lust haben, auszuprobieren, ob ein fehler zu finden ist.

            Hier  hätte es mir gleich auffallen können, da geb ich dir völlig Recht ;)

  2. Hallo,

    die else-Anweisung  funktioniert nicht. Mach ich irgendwas falsch?

    #!/bin/ksh

    Ich hab' zwar die KornShell noch nie benutzt, ich bezweifle aber

    while true
    do
    read var

    dass die KornShell in der nächsten Zeile

    if [ "var" != "exit" ]

    var hier als Variable behandelt.

    Infolgedessen kann ich mir nicht vorstellen,

    dass jemals der else-Zweig ausgeführt werden kann,

    denn die Zeichenkette "var" matcht natürlich nie das Muster "exit" ...

    then echo $var| tr '[A-Z]' '[a-z]'
       else exit
    fi
    done

      
    Vielleicht solltest Du der Zeile 'nen Dollar spendieren.  
      
      
    Freundliche Grüße  
      
    Vinzenz
    
    1. Vielleicht solltest Du der Zeile 'nen Dollar spendieren.

      Ah, vielen Dank. Da hätt ich selber drauf kommen müssen :-)