Hallo Community,
nachdem mir erst so gut geholfen wurde, eine neue Frage:
Wie kann in einem bash-Script abgefragt werden, ob und ggf. welche Taste gedrückt wurde?
Im Kofler kann ich dazu leider nichts finden.
Danke im voraus,
Ulf
Moin,
meinst du sowas?
#!/bin/bash
echo "press any key + return"
read KEY
echo $KEY
Weitere info gibt’s u.a. hier:
http://tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html
http://tldp.org/LDP/abs/html/
hth,
Lutz
Gude!
Ich denke, Du willst auf einen beliebigen Tastendruck (also nicht zwingend RETURN) warten und diesen auswerten.
Die Bash kennt zwar keine PAUSE-Funktion. Du kannst sie aber nachbauen und damit eine Art Ereigniswarteschleife starten:
> read -s -n 1 -p “Eine Taste drücken…” KEY
> Eine Taste drücken… [Benutzer drückt
> echo $KEY
> k
René
Hallo René,
danke für Deine Antwort. Ich merke, dass ich meine Frage nicht gut genug gestellt habe.
Besser gefragt:
In einer Endlosschleife (aus dem Kofler),
while true
do
…..
done
soll abgefragt werden, ob eine Taste (z.B. + oder -) gedrückt wurde. Solange nicht, weiter! Wenn + soll z.B. ein Zaehler erhöht, wenn – soll er vermindert werden.
Und der Kernpunkt: Ist das mit bash-Script möglich? Mit read schaffe ich es bisher nicht.
Danke, Ulf
Für read gibts es einen Timeout.
read -t 1 wartet eine Sekunde und bricht dann ab bzw . setzt das Programm auch ohne Interaktion fort.
Hallo Rico,
prima! Das habe ich bis jetzt nicht mal unter “man read” gefunden. Werde gleich weiter testen.
danke, Ulf
Hallo Alle,
nun komme ich endlich zum Testen und bedauere, denn die zeile von René
read -s -n 1 -p “Eine Taste drücken…” KEY
führt bei -s und -n 1 zum Fehler “Illegal option”. Nur -p klappt.
Ich arbeite mit Kubuntu 10-4, das kanns aber nicht sein.
Welche version von read habt ihr?
Ulf
Wenn ich mich nicht irre, ist der Befehl read in die shell eingebaut.
Möglicherweise verwendest du in deinen Script nicht bash als shell.
Hallo Rico,
danke, Du hast richtig vermutet. Ich Penner habe nach update auf Kubuntu 10-4 vergessen den link /bin/sh auf /bin/bash umzustellen. War auf dash.eingestellt.
Danke schoen, weil es jetzt klappt.
gl, Ulf
>> Ich Penner habe nach update auf Kubuntu 10-4 vergessen den link /bin/sh auf /bin/bash umzustellen.
Geh nicht zu hart mit Dir ins Gericht. Das ist mir auch schon passiert: Ne halbe Stunde im eigenen Code rumgefummelt um festzustellen, dass der SheBang in der ersten Zeile falsch gesetzt ist.
Und damit wieder ernsthaft: Den Link /bin/sh -> dash solltest Du tunlichst nicht umbiegen, da die Dash mit voller Absicht die Systemshell ist. Besser explizit #!/bin/bash an den Skriptanfang.
René
> Das habe ich bis jetzt nicht mal unter “man read” gefunden.
Aber vielleicht unter “help read”? ;-)
René
Hallo Lutz,
danke. hab meine Frage schlecht gestellt. Lies bitte Antwort an René.
Ulf