shell script respond to keypress

j0h picture j0h · Jun 3, 2014 · Viewed 42.8k times · Source

I have a shell script that essentially says something like

while true; do
    read -r input
    if ["$input" = "a"]; then 
        echo "hello world"           
    fi
done

That is all well, and good, but I just realized having to hit ENTER presents a serious problem in this situation. What I need is for the script to respond when a key is pressed, without having to hit enter.

Is there a way to achieve this functionality within a shell script?

Answer

pacholik picture pacholik · Jun 3, 2014
read -rsn1

Expect only one letter (and don't wait for submitting) and be silent (don't write that letter back).