kostenloser Webspace werbefrei: lima-city


Bash-Script: Problem mit while-Schleife

lima-cityForumProgrammiersprachenSonstige Programmiersprachen

  1. Autor dieses Themas

    s********s

    Hi Leute,

    folgendes Problem; ich habe ein kleines Skript um einige große Daten mit einer kleinen Menüsteuerung zu packen geschrieben.

    #!/bin/bash
    
    echo 'Soll gezippt werden? y(es)/n(no)/v(iew)'
    while [ '$abfrage' != 'exit' ]
    do
     read abfrage
    
     case $abfrage in
            y)  echo 'ZIP'
                dozip 
                echo 'ZIP - fertig!'        
            ;;
    
            n) echo 'Kein ZIP --> Exit program'
            ;;
    
            v)  echo 'VIEW'
                viewfiles
            ;;
    
            *) echo 'Befehl nicht bekannt'
            ;;
     esac
    done


    Das Problem ist, dass die case-Fälle alle funktionieren, jedoch bei Eingabe von "exit" das Skript nicht beendet wird.
    Hat jemand eine Idee wo mein Fehler liegt? Ich könnte auch per "exit)" die Variable "$abfrage" in der case Anweisung abfragen und per "exit 0" beenden, jedoch möchte ich das über die while-Schleife regeln. :( Ich möchte nicht aus der laufenden while-Schleife springen. Gibt es da noch eine andere Möglichkeit?

    Danke & Gruß
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. c****s

    Mach in Zeile 4 aus den Ticks um $abfrage einfach quotes, dann läuft das.
  4. Autor dieses Themas

    s********s

    Super, das funktioniert!

    Zeile 4:
    while [ "$abfrage" != 'exit' ]


    PS: Könntest du mir kurz den Unterschied erklären? Es muss eine bestimmte Funktion haben, wenn man die Quotes an Stelle der Ticks benutzt. Danke dir!
  5. c****s

    Die Ticks führen ein full quoting aus, sprich alle Zeichen außer dem Tick selbst werden wörtlich genommen:
    '$abfrage'

    bezeichnet die Zeichenkette Dollar-abfrage und nicht den Inhalt der Variablen abfrage.

    Die Quotes führen ein partial quoting aus, sprich alle Zeichen außer Dollar ($), Backtick (`) und Escape (\) werden wörtlich genommen:
    "$abfrage"

    bezeichnet somit den Inhalt der Variablen abfrage.
  6. Autor dieses Themas

    s********s

    Alles klar... das hilft mir und meine Verständnis! =) Sehr gute Erklärung übrigens.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!