按键通常不是由单个字符构成:如方向键上(^[[A)、下(^[[B)、左(^[[C)、右(^[[D),退出键ESC(^[);方向键的前两个字符的表示方式和ESC的表示方法是一样的。
shell脚本如下:
#!/bin/bash
#Program:
# this is a program for test key
#History:
# Walker version:first
GetKey()
{
aKey=(0 0 0)
cESC=`echo -ne " 33"` #注意,这不是单引号,是ESC下面那个,里面的指令会先执行,并将结果赋值
while :#':'表示永远为真
do
read -s -n 1 key #读取按键,每次只能读取一个ASCII字符
echo $key
# echo XXX
aKey[0]=${aKey[1]}
aKey[1]=${aKey[2]}
aKey[2]=$key
if [[ ${aKey[0]} == $cESC && ${aKey[1]} == "[" ]]
then
if [[ $key == "A" ]];then echo KEYUP#方向键判断
elif [[ $key == "B" ]];then echo KEYDOWN
elif [[ $key == "D" ]];then echo KEYLEFT
elif [[ $key == "C" ]];then echo KEYRIGHT
fi
fi
done
}
GetKey