___ qstnhdr ___ Bash Scripting - lesen Sie einzelne Tastenfolge einschließlich Sondertasten eingeben und Leerzeichen
___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren
___ tag123bash ___ Für Fragen zu Skripten, die für die Bash-Befehlsshell geschrieben wurden. Für Shell-Skripte mit Fehlern, überprüfen Sie diese bitte mit dem Shellcheck-Programm (oder im web-Shellcheck-Server unter https://shellcheck.net), bevor Sie hier posten. Fragen zur interaktiven Nutzung von Bash sind bei Super Usern eher Thema als bei Stack Overflow.
___ answer22843994 ___
Es gibt ein paar Dinge über %code% , die hier relevant sind:
- Es liest eine einzelne Zeile
- Die Zeile wird wie bei der Wortaufspaltung in Felder aufgeteilt
Da Sie ein Zeichen lesen, bedeutet dies, dass die Eingabe von Enter zu einer leeren Variablen führen würde.
Außerdem würde nach den Standardregeln für die Wortaufteilung die Eingabe von Space auch zu einer leeren Variablen führen. Die gute Nachricht ist, dass Sie mit diesem Teil umgehen können, indem Sie %code% setzen.
Ändern Sie Ihre %code% -Anweisung zu:
%Vor%
und erwarten eine Null-Zeichenfolge anstelle von %code% beim Eingeben von Enter .
___ answer22844390 ___
Versuchen Sie, den Lesetrennzeichen auf einen leeren String zu setzen, und überprüfen Sie dann die eingebaute Variable $ REPLY:
%Vor%
Aus irgendeinem Grund konnte ich es nicht zur Arbeit bringen, indem ich eine Variable spezifizierte.
___ tag123shell ___ Der Begriff "Shell" bezieht sich auf eine allgemeine Klasse textbasierter interaktiver Befehlsinterpreter, die meist mit den Unix- und Linux-Betriebssystemen verknüpft sind. Bei Fragen zum Shell-Scripting verwenden Sie bitte ein spezifischeres Tag wie 'bash', 'powershell' oder 'ksh'. Ohne ein spezifisches Tag sollte eine portable (POSIX-konforme) Lösung angenommen werden, obwohl zusätzlich 'posix' oder 'sh' zu bevorzugen ist.
___ tag123specialcharacters ___ Sonderzeichen (wie sie für die Programmierung gelten) sind sprachspezifische reservierte Zeichen oder Symbole, die zur Ausführung einer bestimmten Aufgabe verwendet werden (z. B. Platzhalterzeichen, Datentypenanzeigen, Escape-Zeichen usw.).
___ answer22843993 ___
%Vor%
___ qstntxt ___
Ich bin mir nicht sicher, ob ich StackOverflow oder unix.stackexchange verwenden soll, aber ich habe ähnliche Fragen hier, also hier geht es .
Ich versuche, ein Skript zu erstellen, das von .bashrc aufgerufen wird, das es mir ermöglicht, eine von zwei Optionen auszuwählen, die auf einem einzelnen Tastendruck basieren. Das wäre normalerweise nicht schwer, aber ich möchte, dass die zwei Schlüssel, die den beiden Optionen entsprechen, Leerzeichen und Enter sind.
Folgendes habe ich bis jetzt:
%Vor%
Die folgende Ausgabe ist, was ich bekomme, wenn ich Enter, Leerzeichen, Rücktaste und x:
drücke
%Vor%
Also geben sowohl enter als auch space ein leeres SELECT ein. Keine Möglichkeit, die beiden zu unterscheiden. Ich habe versucht, -d 'D' zu den Leseoptionen hinzuzufügen, aber das hat nicht geholfen. Vielleicht kann mir jemand in die richtige Richtung zeigen.
Die Bash-Version wäre 4.2 btw.
___ tag123keyshow ___ Das generische Konzept zum Erfassen oder Generieren eines Tastenanschlagsereignisses in einer Anwendung.
___