Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Tastaturabfrage Bash

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.01.2002
    Ort
    Meckenheim
    Beiträge
    42

    Tastaturabfrage Bash

    Hi!

    Ein laufendes Script fragt den User ob er "1 .. Hallo" sagen will oder "2 .. blub" sagen will.

    Wie stelle ich denn nun die Abfrage auf?

    So in der Art ca. nur halt als Bash-Script...

    1 get a$: if a$ ="" then 1
    2 if a$ ="1"then print"hallo"
    3 if a$ ="2"then print"blub"
    4 goto1


    Thx

    Kernel-Error
    Linux, verbindet Menschen :-)

    http://www.kernel-error.de/

  2. #2
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Re: Tastaturabfrage Bash

    Code:
    #!/usr/bin/env bash
    
    ANTWORT_OK=false
    
    while ! $ANTWORT_OK; do
       read ANTWORT
       if [ "$ANTWORT"="hallo" ]; then
           ANTWORT_OK=true
       fi
    done
    goto war gestern. Aber das ist auch schon 25 Jahre her!

    Ganz wichtig: Nach [ und vor ] muss mindestens ein Leerzeichen stehen!

    In der Abfrage wurde $ANTWORT in Anführungszeichen gesetzt und dementsprechend auch das hallo. Machst du das nicht, dann Bekommst du einen Fehler, wenn der User lediglich Return drückt. Probier es mal aus.

    Hans
    Geändert von Hans-Georg Normann (02-04-2004 um 17:42 Uhr)
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.01.2002
    Ort
    Meckenheim
    Beiträge
    42

    Re: Re: Tastaturabfrage Bash

    Hi!
    Original geschrieben von Hans-Georg Normann

    goto war gestern. Aber das ist auch schon 25 Jahre her!
    [/B]
    Besten Dank! Werde ich gleich mal probieren... goto Hey, guter alter C64 Basic Code...

    Nein, weiss schon das man das heute nicht mehr macht! Sollte ja nur ein Biespiel sein, was jeder versteht.

    Grüße


    Kernel-Error
    Linux, verbindet Menschen :-)

    http://www.kernel-error.de/

  4. #4
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571

    Re: Re: Re: Tastaturabfrage Bash

    Original geschrieben von Kernel-Error
    Hey, guter alter C64 Basic Code...
    C64, man das ist doch noch kein Alter! Habe mich CBM 2001, CBM 4032, CBM 8032 rumgeschlagen. Das war noch vor VC 128.

    Wer in dreiteufelsnamen brauchte ein OS und mehr als 64 kb Speicher

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549

    Re: Re: Tastaturabfrage Bash

    Original geschrieben von Hans-Georg Normann
    Ganz wichtig: Nach [ und vor ] muss mindestens ein Leerzeichen stehen!
    Ähm, nach und vor dem = beim Vergleich mit test (was [ ] ja ist) auch. Also:

    Code:
     if [ "$ANTWORT" = "hallo" ]; then
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Hi paeschmae

    so wie ich den Code geschrieben habe, ist der bei mir auch durchgelaufen (Fedora Core 1, GNU bash, version 2.05b.0(1)-release (i386-redhat-linux-gnu))

    Ist das Leerzeichen vor und nach dem Gleichheitszeichen vorgeschrieben? Ist mir nicht bekannt. Lerne aber gerne hinzu.

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

  7. #7
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Bei mir gehts definitiv nicht.
    (Bash 2.05b.0(1))

    Code:
    peschmae@satellite:~$ ANTWORT=bla
    peschmae@satellite:~$ if [ "$ANTWORT"="hallo" ]; then echo ja; else echo nein; fi
    ja
    Der Code ohne Leerzeichen gibt immer True (0) zurück.

    und weiter:

    Code:
    peschmae@satellite:~$ if [ "$ANTWORT" = "hallo" ]; then echo ja; else echo nein; fi
    nein
    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  8. #8
    Registrierter Benutzer Avatar von Hans-Georg Normann
    Registriert seit
    05.03.2000
    Ort
    Uetersen
    Beiträge
    571
    Komisch, hatte meinen Code extra ausprobiert ud ging auch. Werde ich mir dann die Leezeiche um das Gleichheitszeichen wohl mal merken müssen.

    Danke

    Hans
    333 Mhz, 466 MHz, neee, ich hab was neues zuhause.....

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •