Hi
Weiß jemand wie ich in einem shell script "press any key to continue" einbau?
"read" funktioniert ja, nur muss man da enter drücken...
cu
Press any key to continue
Re: Press any key to continue
Da bin ich doch glatt noch ins Knobeln gekommen... Aber es geht natürlich, man muss nur wissen wie. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/bash
function press_any_key {
local OLDSTTY CHAR
OLDSTTY=$(stty -g)
stty cbreak -echo
CHAR=$(dd bs=1 count=1 2>/dev/null)
stty "$OLDSTTY"
[ "$1" == "-e" ] && echo "$CHAR"
return 0
}
echo -n "Bitte eine Taste hauen: "
TASTE=$(press_any_key -e)
echo -e "Taste wurde gedrückt.\<!--no-->nDie Taste war \<!--no-->"$TASTE\<!--no-->"."
exit 0
</font><hr></pre></blockquote>
Man definiert sich hier eine Funktion mit Namen "press_any_key"; die erhält zwei lokale Variablen, damit man sich sein Hauptprogramm nicht durcheinanderbringt bei Namenkonflikten. Mittels "stty -g" speichern wir uns die Terminaleinstellungen, wie sie gerade sind und versetzen das Terminal danach in den CBREAK-Mode, in dem keine Zeilenbufferung mehr stattfindet. Mittels "-echo" wird das Auisgeben der getippten Taste auf dem Terminal unterbunden. "dd" liest exakt ein Zeichen, welches in CHAR verwahrt wird. Dann wird das Terminal restauriert und geschaut, ob die Funktion beim Aufruf ein "-e" (für echo) mitbekommen hat. Falls ja, wird das Zeichen ausgegeben, ansonsten stillschweigend zurückgekehrt. Der Rest ist nur ein Beispiel für eine Verwendung der Funktion.
Jochen
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
#!/bin/bash
function press_any_key {
local OLDSTTY CHAR
OLDSTTY=$(stty -g)
stty cbreak -echo
CHAR=$(dd bs=1 count=1 2>/dev/null)
stty "$OLDSTTY"
[ "$1" == "-e" ] && echo "$CHAR"
return 0
}
echo -n "Bitte eine Taste hauen: "
TASTE=$(press_any_key -e)
echo -e "Taste wurde gedrückt.\<!--no-->nDie Taste war \<!--no-->"$TASTE\<!--no-->"."
exit 0
</font><hr></pre></blockquote>
Man definiert sich hier eine Funktion mit Namen "press_any_key"; die erhält zwei lokale Variablen, damit man sich sein Hauptprogramm nicht durcheinanderbringt bei Namenkonflikten. Mittels "stty -g" speichern wir uns die Terminaleinstellungen, wie sie gerade sind und versetzen das Terminal danach in den CBREAK-Mode, in dem keine Zeilenbufferung mehr stattfindet. Mittels "-echo" wird das Auisgeben der getippten Taste auf dem Terminal unterbunden. "dd" liest exakt ein Zeichen, welches in CHAR verwahrt wird. Dann wird das Terminal restauriert und geschaut, ob die Funktion beim Aufruf ein "-e" (für echo) mitbekommen hat. Falls ja, wird das Zeichen ausgegeben, ansonsten stillschweigend zurückgekehrt. Der Rest ist nur ein Beispiel für eine Verwendung der Funktion.
Jochen
Re: Press any key to continue
...nun fehlt nur noch der blaue Hintergrund *ggg*
Winowsemulation mal an der Realität *ggg* <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Viel Erfolg ....
Gruss
Winowsemulation mal an der Realität *ggg* <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">
Viel Erfolg ....
Gruss
Re: Press any key to continue
Hi
Jochen: Vielen Dank!
Das war genau das was ich gesucht habe & ein bischen mehr: Dankeschön!
MfG
Jochen: Vielen Dank!
Das war genau das was ich gesucht habe & ein bischen mehr: Dankeschön!
MfG
Re: Press any key to continue
@heinbloed:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
tput setf 7 ; tput setb 1
</font><hr></pre></blockquote>
Im xterm/Konsole/rxvt/wasauchimmer eintippen... <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
tput setf 7 ; tput setb 1
</font><hr></pre></blockquote>
Im xterm/Konsole/rxvt/wasauchimmer eintippen... <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen