Non sono sicuro se dovrei metterlo su stackoverflow o unix.stackexchange ma ho trovato un po 'di similarquestions qui, quindi eccolo qui.bash scripting - leggi una singola sequenza di tasti che include chiavi speciali e spazio
Sto cercando di creare uno script per essere chiamato da .bashrc che mi consente di selezionare una delle due opzioni in base a un singolo tasto. Questo non sarebbe difficile normalmente, ma voglio che i due tasti corrispondenti alle due opzioni siano spazio ed entri.
Ecco quello che ho ottenuto finora:
#!/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
Il seguente output è quello che ricevo se premere Invio, lo spazio, backspace e 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
Così sia entrare e risultato spazio una SELEZIONE vuota. Non c'è modo di distinguere i due. Ho provato ad aggiungere -d 'D' alle opzioni di lettura, ma questo non ha aiutato. Forse qualcuno può indicarmi la giusta direzione.
La versione di bash sarebbe 4.2 btw.
relative https://unix.stackexchange.com/questions/179191/bashscript-to-detect-right-arrow-key-being-pressed –