Nicht sicher, ob ich dies auf stackoverflow oder unix.stackexchange setzen sollte, aber ich fand einige similarquestions hier, also hier geht es.bash scripting - lesen single keystroke einschließlich spezielle Schlüssel eingeben und Leerzeichen
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 sind und eingeben.
Hier ist, was ich bisher habe:
#!/bin/bash
SELECT=""
while [[ "$SELECT" != $'\x0a' && "$SELECT" != $'\x20' ]]; do
echo "Select session type:"
echo "Press <Enter> to do foo"
echo "Press <Space> to do bar"
read -s -N 1 SELECT
echo "Debug/$SELECT/${#SELECT}"
[[ "$SELECT" == $'\x0a' ]] && echo "enter" # do foo
[[ "$SELECT" == $'\x20' ]] && echo "space" # do bar
done
Die folgende Ausgabe ist, was ich, wenn ich die Eingabetaste drücken, Raum, Backspace und x:
:~$ bin/sessionSelect.sh
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//0
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//0
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug//1
Select session type:
Press <Enter> to start/resume a screen session
Press <Space> for a regular ssh session
Debug/x/1
beide So geben und Raum Ergebnis in ein leeres SELECT. Keine Möglichkeit, die beiden zu unterscheiden. Ich habe versucht, -d 'D' zu den Leseoptionen hinzuzufügen, aber das hat nicht geholfen. Vielleicht kann mich jemand in die richtige Richtung weisen.
Die Bash-Version wäre 4.2 btw.
bezogen https://unix.stackexchange.com/questions/179191/bashscript-to-detect-right-arrow-key-bein-pressed –